21xrx.com
2025-04-03 15:34:51 Thursday
文章检索 我的文章 写文章
C++实现单链表
2023-07-09 07:33:34 深夜i     10     0
C++ 单链表 实现

单链表是一种经常被使用的数据结构,其中每个节点包含一个指向下一个节点的指针和一个存储数据的变量。C++是一种功能强大的编程语言,具有方便的指针操作,可以很容易地实现单链表。

C++的单链表可以通过定义节点类来实现。节点类应该包括一个用于存储数据的成员变量和一个指向下一个节点的指针成员变量。然后,定义一个链表类,它包含一个指向第一个节点的指针和其他操作来处理节点的插入、删除和遍历。

下面是一个基本的单链表实现的代码示例:

// 定义节点类
class Node {
public:
  int data;
  Node* next;
  
  Node(int data)
    this->data = data;
    this->next = nullptr;
   
};
// 定义链表类
class LinkedList {
private:
  Node* head;
  
public:
  LinkedList()
    this->head = nullptr;
  
  
  void insert(int data) {
    Node* newNode = new Node(data);
    
    if (this->head == nullptr)
      this->head = newNode;
     else {
      Node* current = this->head;
      while (current->next != nullptr)
        current = current->next;
      
      current->next = newNode;
    }
  }
  
  void remove(int data) {
    if (this->head == nullptr)
      return;
    
    
    if (this->head->data == data) {
      Node* temp = this->head;
      this->head = this->head->next;
      delete temp;
      return;
    }
    
    Node* current = this->head;
    while (current->next != nullptr) {
      if (current->next->data == data) {
        Node* temp = current->next;
        current->next = current->next->next;
        delete temp;
        return;
      }
      current = current->next;
    }
  }
  
  void display() {
    Node* current = this->head;
    while (current != nullptr)
      cout << current->data << " ";
      current = current->next;
    
    cout << endl;
  }
};

在这个实现中,`insert()`函数将创建一个新的节点并将其添加到链表的末尾。如果链表为空,则新节点将成为头节点。`remove()`函数将删除给定的数据所对应的节点。如果删除的是头节点,则将头节点指针移到下一个节点。`display()`函数以可读格式打印链表中的所有节点的数据。通过这些操作,我们可以构建自己的单链表并使用其功能。

总之,C++是一种非常适合实现单链表的编程语言。通过定义节点和链表类,我们可以使用方便的指针操作来插入、删除和遍历链表。这个实现是非常基础的,可以扩展和优化来实现更复杂的功能。

  
  

评论区

请求出错了