21xrx.com
2025-07-03 12:49:05 Thursday
文章检索 我的文章 写文章
C++如何创建单链表?
2023-07-07 22:00:04 深夜i     14     0
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++中创建单链表需要掌握链表的基本原理以及如何通过类来将其实现,在实际应用中,还需要根据具体的场景,灵活运用链表的操作函数,提高代码的效率和可读性。

  
  

评论区