21xrx.com
2024-11-05 19:41:02 Tuesday
登录
文章检索 我的文章 写文章
C++如何创建单链表?
2023-07-07 22:00:04 深夜i     --     --
C++ 单链表 创建

C++中创建单链表的过程需要掌握链表的基本概念,以及如何通过C++中的类对链表进行创建和操作。

首先,单链表是由若干个节点组成的,每个节点包含两个部分:数据域和指针域。数据域用于存储节点中的数据,指针域则用于指向下一个节点的地址。这样,节点与节点之间就通过指针连接起来,形成了链表。

在C++中,可以通过定义一个链表类来创建单链表。该类需要包含一个指向链表头部的指针,以便于对链表进行操作。同时,还需要定义一个节点类,用于表示单链表中的节点,包含数据和指针两个成员变量。

定义链表类的代码如下:


class LinkedList {

private:

  struct Node {

    int data; // 数据域

    Node* next; // 指针域

  };

  Node* head; // 链表头指针

public:

  LinkedList() : head(nullptr) {}

  ~LinkedList() { clear(); }

  // 添加节点

  void addNode(int data) {

    Node* newNode = new Node;

    newNode->data = data;

    newNode->next = nullptr;

    if (head == nullptr)

      head = newNode;

    

    else {

      Node* p = head;

      while (p->next != nullptr)

        p = p->next;

      

      p->next = newNode;

    }

  }

  // 删除节点

  void deleteNode(int data) {

    if (head == nullptr)

      return;

    

    Node* p = head;

    if (p->data == data)

      head = head->next;

      delete p;

      return;

    

    while (p->next != nullptr) {

      if (p->next->data == data) {

        Node* q = p->next;

        p->next = p->next->next;

        delete q;

        return;

      }

      p = p->next;

    }

  }

  // 遍历链表

  void traverse() {

    Node* p = head;

    while (p != nullptr)

      std::cout << p->data << std::endl;

      p = p->next;

    

  }

  // 清空链表

  void clear() {

    Node* p = head;

    while (p != nullptr) {

      Node* q = p->next;

      delete p;

      p = q;

    }

    head = nullptr;

  }

};

在上述代码中,我们定义了一个链表类,其中包含了三个基本操作函数:添加节点、删除节点和遍历链表。从代码中可以看到,在创建单链表时,我们首先需要定义并初始化一个头指针,然后根据节点的添加和删除动作,不断地调整链表指针域的指向,以便于链表的操作。

需要注意的是,在使用完链表后,我们需要调用清空函数,将链表占用的内存空间释放掉,避免内存泄漏。

总之,在C++中创建单链表需要掌握链表的基本原理以及如何通过类来将其实现,在实际应用中,还需要根据具体的场景,灵活运用链表的操作函数,提高代码的效率和可读性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复