21xrx.com
2024-12-22 16:23:36 Sunday
登录
文章检索 我的文章 写文章
C++ 链表(List)
2023-07-14 04:07:43 深夜i     --     --
C++ 链表 List 线性数据结构 操作方法

链表是计算机科学中常用的一种数据结构,它由一连串的节点组成,每个节点包含了数据以及下一个节点的地址,因此可以通过这些节点来实现复杂的数据结构。

在 C++ 中,链表也是一种常用的数据结构,它可以用来实现栈(Stack)、队列(Queue)、哈希表(Hash Table)等多种数据结构。

链表操作的主要思想是通过节点之间的地址来遍历整个链表,这种遍历方式称为指针(Pointer)遍历。常用的链表操作包括插入、删除、查找和遍历等。

在 C++ 中,链表类通常由两部分组成:节点类和链表类。节点类表示链表中的节点,它通常包含一个数据成员和一个指向下一个节点的指针成员。链表类则表示整个链表,它通常包含一些成员函数,如插入、删除、查找和遍历等。

以下是一个简单的链表类的示例代码:


#include <iostream>

using namespace std;

class Node {

public:

  int data;

  Node* next;

};

class LinkedList {

public:

  Node* head;

  LinkedList()

    head = NULL;

  

  void addNode(int data) {

    Node* newNode = new Node();

    newNode->data = data;

    newNode->next = NULL;

    if (head == NULL)

      head = newNode;

    

    else {

      Node* tmp = head;

      while (tmp->next != NULL)

        tmp = tmp->next;

      

      tmp->next = newNode;

    }

  }

  void deleteNode(int data) {

    Node* tmp = head;

    if (tmp->data == data)

      head = tmp->next;

      delete tmp;

      return;

    

    while (tmp->next != NULL) {

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

        Node* del = tmp->next;

        tmp->next = del->next;

        delete del;

        return;

      }

      tmp = tmp->next;

    }

  }

  void display() {

    Node* tmp = head;

    while (tmp != NULL)

      cout << " " << tmp->data;

      tmp = tmp->next;

    

    cout << endl;

  }

};

int main() {

  LinkedList ll;

  ll.addNode(5);

  ll.addNode(10);

  ll.addNode(15);

  ll.addNode(20);

  ll.display();

  ll.deleteNode(10);

  ll.display();

  return 0;

}

以上代码实现了链表的基本操作,包括添加、删除和显示节点。链表类还可以添加其他的功能来实现不同的数据结构。

在使用链表时,需要注意内存泄漏的问题。链表类需要负责释放节点的内存,否则可能会导致程序运行过程中的内存泄漏。

总之,链表是一种非常重要的数据结构,它在计算机科学的许多领域中都得到广泛应用。了解链表的基本操作和实现方法可以更好地理解其他数据结构的实现和应用。

  
  

评论区

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