21xrx.com
2025-03-28 21:07:07 Friday
文章检索 我的文章 写文章
用C++实现链表
2023-06-28 15:31:07 深夜i     14     0
C++ 链表 实现

链表是一种常用的线性数据结构,它不像数组有固定大小,可以动态地添加、删除元素。在C++中,我们可以使用指针实现链表,这样就可以快速地插入、删除元素,而不需要移动其他元素。

首先,我们需要定义一个节点类,用来表示链表中的每个元素。它包含两个部分,一个是数据部分,另一个是指向下一个节点的指针。

class Node {
public:
  int data;
  Node* next;
};

接着,我们需要定义一个链表类,它包含指向头节点的指针。链表类可以定义一些基本的操作,如添加、删除、查找节点等。

class LinkedList {
public:
  Node* head;
  
  LinkedList()
    head = nullptr;
  
  
  // 添加节点到链表尾部
  void append(int data) {
    Node* new_node = new Node();
    new_node->data = data;
    new_node->next = nullptr;
    
    if (head == nullptr)
      head = new_node;
      return;
    
    
    Node* curr = head;
    while (curr->next != nullptr)
      curr = curr->next;
    
    curr->next = new_node;
  }
  
  // 删除节点
  void remove(int data) {
    if (head == nullptr)
      return;
    
    
    if (head->data == data) {
      Node* temp = head;
      head = head->next;
      delete temp;
      return;
    }
    
    Node* curr = head;
    while (curr->next != nullptr && curr->next->data != data)
      curr = curr->next;
    
    if (curr->next == nullptr)
      return;
    
    Node* temp = curr->next;
    curr->next = curr->next->next;
    delete temp;
  }
  
  // 查找节点
  Node* find(int data) {
    if (head == nullptr)
      return nullptr;
    
    Node* curr = head;
    while (curr != nullptr && curr->data != data)
      curr = curr->next;
    
    return curr;
  }
};

这是一个简单的链表实现,它包含了添加、删除、查找节点的基本操作。当然,我们还可以添加一些其他的操作,如反转链表、排序链表等。

使用链表时,需要注意内存管理的问题。在添加节点时,需要使用new关键字来分配内存,而在删除节点时,需要使用delete关键字来释放内存。否则,就会出现内存泄漏的问题。

总结一下,链表是一种非常有用的数据结构,可以快速地添加、删除元素。在C++中,我们可以使用指针来实现链表,需要注意内存管理的问题。如果想要更深入地了解链表,可以查看一些高级数据结构的实现,如双向链表、循环链表等。

  
  

评论区

请求出错了