21xrx.com
2024-11-05 16:40:46 Tuesday
登录
文章检索 我的文章 写文章
用C++实现链表
2023-06-28 15:31:07 深夜i     --     --
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++中,我们可以使用指针来实现链表,需要注意内存管理的问题。如果想要更深入地了解链表,可以查看一些高级数据结构的实现,如双向链表、循环链表等。

  
  

评论区

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