21xrx.com
2025-04-01 08:27:08 Tuesday
文章检索 我的文章 写文章
C++实现单链表的增删改查
2023-06-30 18:19:22 深夜i     14     0
单链表 C++ 增加 删除 修改 查询

单链表是一种只能单向访问的链式数据结构,它由一系列节点组成,每个节点包含一个数据域和一个指向下一个节点的指针域。单链表支持插入、删除和查找等基本操作,是编程中常用的数据结构之一。

1. 定义节点结构体

在C++中,我们可以使用结构体来定义单链表的节点。结构体中包含两个成员,分别表示数据域和指针域。

struct ListNode {
  int val;
  ListNode* next;
  
  ListNode(int x) : val(x), next(NULL) {}
};

2. 创建节点并插入链表

我们使用new运算符动态创建节点,并使用指针指向新创建的节点。插入新节点时,我们需要将新节点的指针域指向下一个节点,并将上一个节点的指针域指向新节点。

ListNode* head = NULL;
// 在链表头插入一个节点
ListNode* newNode = new ListNode(1);
newNode->next = head;
head = newNode;
// 在链表尾插入一个节点
ListNode* tail = head;
while (tail->next != NULL)
  tail = tail->next;
ListNode* anotherNode = new ListNode(2);
tail->next = anotherNode;

3. 删除链表中节点

要删除链表中的一个节点,我们需要找到该节点的前一个节点,然后将前一个节点的指针域指向该节点的下一个节点。然后删除该节点即可。

// 删除链表中的一个节点
ListNode* prevNode = head;
while (prevNode->next != NULL && prevNode->next->val != 2)
  prevNode = prevNode->next;
ListNode* tempNode = prevNode->next;
prevNode->next = tempNode->next;
delete tempNode;

4. 修改链表中节点

要修改链表中的一个节点,我们需要找到该节点,然后修改该节点的数据域即可。

// 修改链表中的一个节点
ListNode* updateNode = head;
while (updateNode != NULL && updateNode->val != 1)
  updateNode = updateNode->next;
updateNode->val = 0;

5. 查找链表中节点

要查找链表中是否存在某个值为x的节点,我们可以通过遍历链表来查找。当找到该节点时,返回节点指针;否则返回NULL。

// 在链表中查找某个节点
ListNode* findNode = head;
while (findNode != NULL && findNode->val != 1)
  findNode = findNode->next;
if (findNode != NULL)
  cout << "找到节点:" << findNode->val << endl;
else
  cout << "未找到节点" << endl;

总结

我们可以使用C++语言来实现单链表的增删改查等基本操作。单链表是一种常用的数据结构,具有插入、删除和查找等功能,对于解决实际问题非常有帮助。通过掌握单链表的实现方法,可以提高程序编写的效率和质量。

  
  

评论区