21xrx.com
2025-03-30 09:14:31 Sunday
文章检索 我的文章 写文章
C++链表实现
2023-07-05 00:27:53 深夜i     15     0
C++ 链表 实现

链表是一种常见的数据结构,在计算机科学中被广泛使用。C++是一门非常流行的编程语言,具有高效性和灵活性。在C++中,我们可以使用指针来实现链表。

链表是由一组节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。链表可以按照顺序储存大量数据,不需要事先确定它们的数量。当需要执行插入或删除操作时,链表提供了更快捷的方式,而不必移动大块的元素。

在使用C++实现链表时,我们需要定义节点的结构体。每个节点包含数据和指向下一个节点的指针:

struct Node
{
 int data;
 Node* next;
};

接着,我们需要定义链表的类,并包含节点的指针作为私有成员:

class LinkedList
{
 private:
  Node* head;
};

我们还需要为链表类定义一些函数,以允许对节点进行基本操作,比如插入、删除和查找节点。这些函数需要使用指针来遍历链表并操作其中的节点。

以下是一个示例程序,实现了链表的插入和删除操作:

#include <iostream>
using namespace std;
struct Node
{
 int data;
 Node* next;
};
class LinkedList
{
 private:
  Node* head;
 
 public:
  LinkedList()
  
   head = NULL;
  
  
  void addNode(int val)
  {
   Node* newNode = new Node;
   newNode->data = val;
   newNode->next = NULL;
   if (head == NULL)
   
    head = newNode;
   
   else
   {
    Node* temp = head;
    while (temp->next != NULL)
    
     temp = temp->next;
    
    temp->next = newNode;
   }
  }
  void deleteNode(int val)
  {
   Node* temp = head;
   Node* prev = NULL;
   while (temp != NULL && temp->data != val)
   
    prev = temp;
    temp = temp->next;
   
   if (temp == NULL)
   
    cout << "Node not found." << endl;
    return;
   
   prev->next = temp->next;
   delete temp;
  }
  void printList()
  {
   Node* temp = head;
   while (temp != NULL)
   
    cout << temp->data << " ";
    temp = temp->next;
   
   cout << endl;
  }
};
int main()
{
 LinkedList list;
 list.addNode(1);
 list.addNode(2);
 list.addNode(3);
 list.addNode(4);
 list.printList();
 list.deleteNode(3);
 list.printList();
 return 0;
}

以上程序中,我们创建了一个名为LinkedList的类,包含了Node类型的头指针。该类有一个默认构造函数,初始化头指针为空。addNode函数用于在链表中插入节点,deleteNode函数用于在链表中删除指定节点。printList函数用于打印整个链表的值。

C++中的指针操作是实现链表的关键,如遍历链表、添加和删除节点等。尽管操作起来比较复杂,但使用C++实现链表是一种非常有效的数据结构和算法学习方法。通过使用链表,可以更加深入地理解指针和内存分配等底层概念。

  
  

评论区

请求出错了