C++ 链表删除节点代码示例:高效实现节点删除功能
C++ 链表删除节点代码示例
以下代码示例展示了如何使用 C++ 实现链表删除节点功能,其中代码结构清晰,注释详细,易于理解。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct node
{
int data;
struct node *next;
} ListNode;
typedef ListNode *LinkList;
LinkList CreatList(void);
void DeleteList(LinkList L);
void PrintList(LinkList L);
int main()
{
LinkList head;
head = CreatList();
DeleteList(head);
PrintList(head);
return 0;
}
LinkList CreatList(void)
{
int val;
LinkList head, p, r;
head = new ListNode;
head->next = NULL;
r = head;
while (1)
{
scanf('%d', &val);
if (val == -1)
{
break;
}
p = new ListNode;
p->next = NULL;
p->data = val;
r->next = p;
r = p;
}
return head;
}
void DeleteList(LinkList L)
{
int val;
scanf('%d', &val);
LinkList p, r;
p = L;
while (p->next)
{
if (p->next->data == val)
{
r = p->next;
p->next = p->next->next;
delete r;
}
p = p->next;
}
}
void PrintList(LinkList L)
{
LinkList p;
p = L->next;
while (p)
{
printf('%d ', p->data);
p = p->next;
}
}
代码说明:
-
数据结构定义:
ListNode结构体定义了链表中的节点,包含数据域data和指向下一个节点的指针next。LinkList是指向ListNode结构体的指针,表示链表的头指针。
-
函数定义:
CreatList()函数用于创建链表,从输入中读取数据,并将数据插入链表中。DeleteList()函数用于删除链表中指定数据的值的节点。PrintList()函数用于打印链表中所有节点的数据。
-
主函数:
- 创建一个新的链表
head。 - 调用
CreatList()函数创建链表。 - 调用
DeleteList()函数删除指定数据的节点。 - 调用
PrintList()函数打印链表。
- 创建一个新的链表
代码功能:
该代码实现了一个简单的链表删除节点功能,允许用户从链表中删除指定数据的值的节点。代码通过遍历链表,找到需要删除的节点,并将其从链表中移除,最终实现节点的删除。
代码优化建议:
- 可以考虑添加错误处理机制,例如,在
DeleteList()函数中,如果要删除的节点不存在,可以提示用户。 - 可以使用更简洁的代码来实现链表的操作,例如使用迭代器来遍历链表。
总结:
该代码示例展示了使用 C++ 实现链表删除节点的基本步骤,为理解链表数据结构和操作提供了参考。通过进一步的优化和扩展,可以实现更多链表相关的功能,并应用于实际的编程场景中。
原文地址: https://www.cveoy.top/t/topic/QHb 著作权归作者所有。请勿转载和采集!