21xrx.com
2025-03-27 20:43:49 Thursday
文章检索 我的文章 写文章
使用C++建立链表
2023-07-05 00:06:18 深夜i     --     --
C++ 链表 建立

链表是一种重要的数据结构,在C++中可以用指针来实现。本文将介绍使用C++建立链表的基本操作。

1.定义链表节点

首先,定义链表节点结构体。链表节点包含两个关键的元素:数据和指针。以下示例代码定义了一个包含 int 数据的链表节点结构体。

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

2.创建链表

创建链表需要定义链表的头节点。头节点是一种特殊的节点,用于标识链表的起始位置。以下示例代码创建了一个包含头节点的链表。

Node* head = new Node;
head->data = 0;
head->next = NULL;

该代码创建了一个头节点,数据为0,指针为NULL。该节点没有前驱节点。

3.添加节点

添加节点是链表的核心操作之一。以下示例代码演示了如何在链表末尾添加一个节点。

void appendNode(Node*& head, int value) {
 Node* newNode = new Node;
 newNode->data = value;
 newNode->next = NULL;
 if (head == NULL)
  head = newNode;
  else {
  Node* lastNode = head;
  while (lastNode->next != NULL)
   lastNode = lastNode->next;
  
  lastNode->next = newNode;
 }
}

该函数接收一个指向头节点的指针和一个整数 value,创建一个新的节点存储value,并找到链表的末尾将其添加到链表中。

4.删除节点

删除节点也是链表的核心操作之一。以下示例代码演示了如何通过值删除链表中的一个节点。

void deleteNode(Node*& head, int value) {
 if (head == NULL)
  return;
 
 if (head->data == value) {
  Node* toDeleteNode = head;
  head = head->next;
  delete toDeleteNode;
 } else {
  Node* currentNode = head;
  while (currentNode->next != NULL && currentNode->next->data != value)
   currentNode = currentNode->next;
  
  if (currentNode->next != NULL) {
   Node* toDeleteNode = currentNode->next;
   currentNode->next = toDeleteNode->next;
   delete toDeleteNode;
  }
 }
}

该函数接收一个指向头节点的指针和一个整数 value,从链表中删除值等于value的节点。

5.遍历链表

遍历链表是了解链表中存储的数据的一种有效方式。以下示例代码遍历了链表并输出每个节点的值。

void printList(Node* head) {
 Node* currentNode = head;
 while (currentNode != NULL)
  cout << currentNode->data << endl;
  currentNode = currentNode->next;
 
}

该函数接收一个指向头节点的指针,并遍历链表输出每个节点的值。

总结

本文介绍了使用C++建立链表的基本操作,包括定义节点、创建链表、添加节点、删除节点和遍历链表。链表是一种高效的数据结构,可以用于解决各种问题。如果您对链表感兴趣,请继续学习并尝试实现更复杂的链表操作。

  
  

评论区