21xrx.com
2024-12-22 21:58:52 Sunday
登录
文章检索 我的文章 写文章
C++实现链表数据结构
2023-07-07 20:33:49 深夜i     --     --
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++实现基本的链表数据结构,进而将其扩展到更复杂的应用场景。

  
  

评论区

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