21xrx.com
2025-06-21 15:28:41 Saturday
文章检索 我的文章 写文章
C++动态链表实现
2023-07-12 20:36:40 深夜i     9     0
C++ 动态链表 实现

C++是一种高级编程语言,是运用广泛的编程语言之一。它的动态链表实现是一种简单但非常实用的数据结构,在许多计算机程序中经常被使用。

链表是一种存储数据的结构,其中的每个数据都有一个指向下一个数据的指针。动态链表是可以随时添加和删除数据的链表,这使得它在某些情况下比静态链表更灵活和更适用。

下面是一种C++动态链表实现的示例代码:

#include <iostream>
using namespace std;
class Node {
public:
  int data;
  Node* next;
};
class LinkedList {
private:
  Node* head;
public:
  LinkedList()
    head = NULL;
  
  ~LinkedList() {
    Node* current = head;
    Node* next;
    while (current != NULL)
      next = current->next;
      delete current;
      current = next;
    
  }
  void addNode(int data) {
    Node* newNode = new Node();
    newNode->data = data;
    newNode->next = head;
    head = newNode;
  }
  void deleteNode(int data) {
    Node* current = head;
    if (current == NULL)
      return;
    if (current->data == data)
      head = current->next;
      delete current;
      return;
    
    while (current->next != NULL) {
      if (current->next->data == data) {
        Node* temp = current->next;
        current->next = temp->next;
        delete temp;
        return;
      }
      current = current->next;
    }
  }
  void display() {
    Node* node = head;
    while (node != NULL)
      cout << node->data << " ";
      node = node->next;
    
    cout << endl;
  }
};
int main() {
  LinkedList* list = new LinkedList();
  list->addNode(1);
  list->addNode(2);
  list->addNode(3);
  list->addNode(4);
  list->deleteNode(3);
  list->display();
  delete list;
  return 0;
}

在这个示例代码中,我们首先定义了一个“Node”类来表示链表中的一个节点。然后定义了一个“LinkedList”类来表示整个链表。

在“LinkedList”类中,我们定义了“head”指针来表示链表的头节点。在构造函数中,我们将头节点设置为NULL。

我们还定义了一个“addNode”函数和一个“deleteNode”函数来添加和删除链表中的节点。添加节点时,我们创建一个新的节点并将其添加到头部。删除节点时,我们遍历整个链表直到找到待删除节点,并将其从链表中移除。

最后我们定义了一个“display”函数来打印当前链表中的所有节点。

在我们的“main”函数中,我们首先创建了一个新的LinkedList实例,并向其中添加四个节点。然后我们调用deleteNode函数将其中一个节点移除,并使用display函数打印最终的链表内容。

需要注意的是,在程序结束前,我们必须调用“delete”操作来释放链表所占用的内存空间。

综上所述,C++的动态链表实现是一种强大的数据结构,可以方便地添加和删除数据,并以此适用于多种场合。通过以上例子,我们可以看到实现动态链表的过程非常简单和易于理解,同时也是C++编程中不可忽视的重要内容。

  
  

评论区