117.info
人生若只如初见

C++怎么用类实现链表

要使用类实现链表,首先需要定义一个节点类来表示链表的节点,然后再定义一个链表类来操作这些节点。

以下是一个使用类实现链表的示例:

#include 

// 链表节点类
class Node {
public:
    int data;
    Node* next;
    
    Node(int value) {
        data = https://www.yisu.com/ask/value;"hljs">void append(int value) {
        Node* newNode = new Node(value);
        
        if (head == nullptr) {
            head = newNode;
        } else {
            Node* current = head;
            while (current->next != nullptr) {
                current = current->next;
            }
            current->next = newNode;
        }
    }
    
    // 在链表指定位置插入一个节点
    void insert(int value, int index) {
        if (index < 0) {
            std::cout << "Invalid index!" << std::endl;
            return;
        }
        
        Node* newNode = new Node(value);
        
        if (index == 0) {
            newNode->next = head;
            head = newNode;
        } else {
            Node* current = head;
            for (int i = 0; i < index - 1; i++) {
                if (current == nullptr) {
                    std::cout << "Invalid index!" << std::endl;
                    return;
                }
                current = current->next;
            }
            newNode->next = current->next;
            current->next = newNode;
        }
    }
    
    // 删除链表指定位置的节点
    void remove(int index) {
        if (index < 0) {
            std::cout << "Invalid index!" << std::endl;
            return;
        }
        
        if (index == 0) {
            Node* temp = head;
            head = head->next;
            delete temp;
        } else {
            Node* current = head;
            for (int i = 0; i < index - 1; i++) {
                if (current == nullptr || current->next == nullptr) {
                    std::cout << "Invalid index!" << std::endl;
                    return;
                }
                current = current->next;
            }
            Node* temp = current->next;
            current->next = temp->next;
            delete temp;
        }
    }
    
    // 打印链表中的所有节点值
    void print() {
        Node* current = head;
        while (current != nullptr) {
            std::cout << current->data << " ";
            current = current->next;
        }
        std::cout << std::endl;
    }
};

int main() {
    LinkedList myList;
    
    myList.append(1);
    myList.append(2);
    myList.append(3);
    
    myList.insert(4, 1);
    
    myList.print();  // 输出:1 4 2 3
    
    myList.remove(2);
    
    myList.print();  // 输出:1 4 3
    
    return 0;
}

在上述示例中,我们首先定义了一个节点类Node,包含一个整型数据成员data和一个指向下一个节点的指针next

然后,我们定义了一个链表类LinkedList,包含一个指向链表头部的指针head。链表类中实现了几种基本的链表操作,如在链表尾部插入节点、在指定位置插入节点、删除指定位置的节点以及打印链表中的所有节点。

main函数中,我们创建了一个链表对象myList,并进行了一些插入、删除和打印操作,最后销毁链表对象。

运行上述示例代码,将输出如下结果:

1 4 2 3
1 4 3

这表明使用类实现的链表能够正常工作。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe7b2AzsLAAJVBFw.html

推荐文章

  • c# winform组件 怎样集成

    在C# WinForms应用程序中集成组件通常涉及以下几个步骤: 添加引用: 首先,确保你已经安装了所需的组件。例如,如果你想要集成一个第三方库,你需要将该库的DLL...

  • c# winform组件 怎样提高效率

    要提高C# WinForms应用程序的效率,可以从多个方面入手,包括优化绘图过程、使用异步操作、合理设置控件属性等。以下是一些具体的优化策略:
    优化绘图过程 ...

  • c# winform组件 怎样自定义

    在C#中,要自定义WinForms组件,您需要创建一个继承自现有控件的新类,并重写其构造函数、事件处理程序和其他相关方法。以下是一个简单的示例,说明如何创建一个...

  • c# winform组件 怎样选择合适

    在C# WinForms应用程序开发中,选择合适的组件对于构建高效、用户友好的界面至关重要。以下是一些选择合适组件的建议:
    控件选择 根据需求选择:选择控件时...

  • Spark和Hadoop的应用场景有哪些

    Spark和Hadoop是两个大数据处理框架,它们都有各自的应用场景。
    Hadoop的主要应用场景包括: 批处理:Hadoop适用于处理大规模数据集的批量作业,可以在集群...

  • php中sleep函数不执行怎么解决

    如果在 PHP 中使用 sleep() 函数时没有执行,可能是以下几个原因导致的: PHP 配置文件中的 disable_functions 设置禁用了 sleep 函数。你可以检查 php.ini 文件...

  • python怎么删除文件夹下的所有文件

    你可以使用 os 模块中的 listdir 函数来获取文件夹下的所有文件名,并使用 os.remove 函数来删除每个文件。以下是一个示例代码:
    import os def delete_fil...

  • linux怎么杀死进程并重启程序

    在Linux系统中,可以使用以下命令来杀死进程并重启程序: 使用ps命令查找进程的PID(进程ID):
    ps -ef | grep 使用kill命令杀死进程:
    kill 重启程序...