21xrx.com
2024-12-22 20:33:47 Sunday
登录
文章检索 我的文章 写文章
C++单链表:数据结构与实现
2023-07-14 20:58:15 深夜i     --     --
C++ 单链表 数据结构 实现

C++单链表是计算机科学中最常用的数据结构之一,主要功能是将一组数据存储在一条线性链表中,使得数据的访问和插入删除变得更加高效。

首先,单链表是由一系列节点组成的,每个节点有两个属性,一个是存储数据的值,另一个是指向下一个节点的指针。因此,我们可以使用C++中的结构体来实现一个单链表节点,如下所示:

struct Node {

  int data;

  Node* next;

};

其中,data表示要存储的数据,next表示指向下一个节点的指针。

接着,我们可以定义一个单链表类,包含一些常见的操作,如创建、插入、删除等。

class LinkedList {

public:

  LinkedList();

  ~LinkedList();

  void insert(int data);

  void del(int data);

  void display();

private:

  Node* head;

};

其中,head表示链表的头节点,它不存储任何数据,只是标志第一个真正存储数据的节点。

在定义好单链表类后,我们开始逐一实现各个操作:

① 创建链表

创建链表最简单的方法就是初始化一个头节点,然后将head指针指向它。

LinkedList::LinkedList()

  head = new Node;

  head->next = nullptr;

② 插入数据

插入数据的过程比较简单,只需要先申请一个新节点,将数据存储到新节点中,然后将新节点插入到链表中即可。

void LinkedList::insert(int data) {

  Node* newNode = new Node;

  newNode->data = data;

  newNode->next = nullptr;

  Node* current = head;

  while (current->next != nullptr)

    current = current->next;

  current->next = newNode;

}

③ 删除数据

删除数据需要先找到要删除节点的前一个节点,然后将前一个节点的指针指向要删除节点的下一个节点,最后释放要删除节点的内存。

void LinkedList::del(int data) {

  Node* current = head;

  while (current->next != nullptr && current->next->data != data)

    current = current->next;

  if (current->next != nullptr) {

    Node* temp = current->next;

    current->next = temp->next;

    delete temp;

  }

}

④ 显示数据

显示数据的过程比较简单,只需要遍历整个链表,依次输出每个节点的数据即可。

void LinkedList::display() {

  Node* current = head->next;

  while (current != nullptr)

    cout << current->data << " ";

    current = current->next;

   cout << endl;

}

最后,需要记得在链表类的析构函数中,释放所有节点内存。

LinkedList::~LinkedList() {

  Node* current = head->next;

  while (current != nullptr) {

    Node* temp = current;

    current = current->next;

    delete temp;

  }

  delete head;

}

综上,C++单链表是一种非常有效的数据结构,能够大大提高数据存储和访问的效率,开发者可以根据实际需求选择使用。

  
  

评论区

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