21xrx.com
2024-11-25 05:15:20 Monday
登录
文章检索 我的文章 写文章
C++链表实现
2023-07-05 00:27:53 深夜i     --     --
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++实现链表是一种非常有效的数据结构和算法学习方法。通过使用链表,可以更加深入地理解指针和内存分配等底层概念。

  
  

评论区

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