C语言实现单链表:创建、打印、插入与删除操作
需积分: 10 170 浏览量
更新于2024-09-13
收藏 3KB TXT 举报
该文件是关于单链表数据结构的操作教程,包括创建、打印、插入和删除节点的函数实现。
单链表是一种基础的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的指针。在C语言中,我们可以使用结构体来定义单链表的节点类型。以下是一个简单的单链表节点定义:
```c
typedef struct LNode{
int data;
struct LNode* next;
} LNode, *LinkList;
```
这里,`LNode` 结构体包含了两个成员:`data` 用于存储数据,`next` 是一个指向下一个节点的指针。`LinkList` 是一个指向 `LNode` 的指针,通常用于操作链表。
创建单链表的函数 `LinkListCreat_LinkList()` 首先分配一个头节点,然后通过用户输入的整数序列构建链表。当用户输入-1时,表示输入结束。函数最后返回链表的头节点,并打印出创建的链表。
```c
LinkList Creat_LinkList() {
LinkList head, p, rear;
// 初始化头节点、尾节点和临时节点
head = (LinkList)malloc(sizeof(LNode));
rear = head;
int x;
printf("请输入整数序列,以-1结束\n");
scanf("%d", &x);
while (x != -1) { // 当输入不为-1时,继续添加节点
p = (LinkList)malloc(sizeof(LNode));
p->data = x;
rear->next = p;
rear = p;
scanf("%d", &x);
}
rear->next = NULL; // 将尾节点的next设为NULL,表示链表结束
printf("创建的链表为=");
return head;
}
```
打印链表的函数 `print()` 使用一个指针 `p` 从头节点开始遍历链表,逐个打印节点中的数据。
```c
void print(LinkList head) {
LinkList p;
p = head;
while (p) { // 遍历链表直到p为空
printf("%d", p->data);
p = p->next; // 移动到下一个节点
}
printf("\n");
}
```
插入节点的函数 `LinkListInsert_LinkList()` 需要用户提供插入位置的索引 `i` 和要插入的元素值 `e`。函数会找到插入位置并创建新的节点,将新节点插入到链表中。
```c
LinkList Insert_LinkList(LinkList head) {
LinkList p, s;
int j = 0, i, e;
printf("请输入插入位置i和元素值e:\n");
scanf("%d", &i);
scanf("%d", &e);
p = head;
while (p && j < i - 1) { // 找到插入位置
p = p->next;
++j;
}
if (!p || j > i - 1) {
printf("插入位置无效,索引超范围\n");
} else {
s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
}
printf("插入后链表为=");
}
```
删除节点的函数 `LinkListDelete_LinkList()` 同样需要用户提供要删除的节点位置 `i`。函数找到指定位置的节点,并将其删除。
```c
LinkList Delete_LinkList(LinkList head) {
LinkList p, q;
int j = 0, i, e;
printf("请输入要删除的节点位置i:\n");
scanf("%d", &i);
p = head;
while (p && j < i - 1) { // 找到要删除的节点前一个位置
p = p->next;
++j;
}
if (!p || j > i - 1) {
printf("删除位置无效,索引超范围\n");
} else {
q = p->next; // 保存要删除的节点
p->next = q->next; // 将q从链表中删除
free(q); // 释放内存
}
printf("删除后链表为=");
}
```
以上代码提供了一个基本的单链表操作框架,包括创建、打印、插入和删除节点的功能。实际应用中,可能需要考虑错误处理和内存管理的细节,例如检查输入有效性、处理空链表等。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-07-12 上传
2021-10-11 上传
2022-07-12 上传
2018-05-28 上传
2022-09-21 上传
2021-10-08 上传
Matrix_Dev
- 粉丝: 3
- 资源: 4
最新资源
- MATLAB全常用函数下载,权威性
- 基于C#的 office owc统计图解决方案
- 关于modbus学习的 pdf 文档
- 微软的面试题及答案-超变态但是很经典
- CISCO交换机配置AAA、802.1X以及VACL
- microsoft office excel 2003 函数应用完全手册
- ModBus通讯协议
- 学员信息管理系统PPT答辩稿
- D-LINK校园网设计
- 计算机三级等级考试资料
- 嵌入式C C++语言精华应用
- Java23种设计模式
- java和jsp编程常见到的异常解决方案
- Linux操作系统下C语言编程入门.pdf
- Wrox.Beginning.Shell.Scripting.Apr.2005.eBook-DDU.pdf
- 基于MVC模式Struts框架