21xrx.com
2025-04-14 18:43:48 Monday
文章检索 我的文章 写文章
C++实现链表数据结构
2023-07-07 20:33:49 深夜i     22     0
C++ 链表 数据结构 节点 指针

链表是一种常见的数据结构,它可以存储一系列的数据并且以链的形式相互连接。C++语言提供了灵活的指针操作,使得实现链表数据结构变得非常简单。下面我们将一步步介绍如何使用C++实现链表数据结构。

首先,我们需要定义节点类。节点类包含两个基本成员:该节点存储的数据和指向下一个节点的指针。我们定义如下:

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

在链表数据结构中,每个节点都需要动态分配内存并且在使用结束后释放内存。我们定义一个链表类来管理节点:

class LinkedList {
private:
  Node* head;
public:
  LinkedList();
  ~LinkedList();
  void addNode(int);
  void printList();
};

其中,我们定义了两个成员变量:链表头部指针和成员函数。addNode函数用于向链表中添加节点,printList函数用于遍历链表并输出每个节点的数据。

addNode函数的实现如下:

void LinkedList::addNode(int value) {
  Node* newNode = new Node();
  newNode->data = value;
  newNode->next = nullptr;
  if (head == nullptr)
    head = newNode;
   else {
    Node* temp = head;
    while (temp->next != nullptr)
      temp = temp->next;
    
    temp->next = newNode;
  }
}

在addNode函数中,我们先动态分配一个新的节点并给其data成员赋值。当链表为空时,将该节点设为头部节点;当链表不为空时,遍历至末尾节点并将末尾节点的next指针指向新增节点。

printList函数的实现如下:

void LinkedList::printList() {
  Node* temp = head;
  while (temp != nullptr)
    cout << temp->data << " ";
    temp = temp->next;
  
  cout << endl;
}

在printList函数中,我们从头部节点开始遍历整个链表,并输出每个节点的data成员。

最后,我们需要实现LinkedList类的构造函数和析构函数来管理内存。构造函数用于初始化链表头部指针,析构函数用于删除所有节点并释放内存。构造函数和析构函数的实现如下:

LinkedList::LinkedList()
  head = nullptr;
LinkedList::~LinkedList() {
  Node* temp = head;
  while (temp != nullptr) {
    Node* delNode = temp;
    temp = temp->next;
    delete delNode;
  }
}

使用C++实现链表数据结构非常灵活,方便我们实现各种算法。通过本文的介绍,读者可以了解如何使用C++实现基本的链表数据结构,进而将其扩展到更复杂的应用场景。

  
  

评论区