"单链表插入删除实验报告及程序源代码"
版权申诉
117 浏览量
更新于2024-02-18
1
收藏 319KB DOC 举报
实验一、单链表的插入和删除
一、目的
本实验的目的是了解和掌握线性表的逻辑构造和链式存储构造,通过实践掌握单链表的基本算法以及相关的时间性能分析。
二、要求
1. 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串。
2. 根据输入的字符串,首先找到相应的结点,然后进行删除操作。
三、程序源代码摘要
以下是实验中使用的单链表的插入和删除的简要源代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链表结点结构体
typedef struct Node {
char data[100]; // 数据域为字符串
struct Node* next; // 指针域
} Node;
// 创建链表
Node* createList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 插入结点
void insertNode(Node* head, char newData[]) {
Node* newNode = (Node*)malloc(sizeof(Node));
strcpy(newNode->data, newData);
newNode->next = head->next;
head->next = newNode;
}
// 删除结点
void deleteNode(Node* head, char targetData[]) {
Node* p = head->next;
Node* pre = head;
while (p != NULL) {
if (strcmp(p->data, targetData) == 0) {
pre->next = p->next;
free(p);
break;
}
pre = p;
p = p->next;
}
}
// 主函数
int main() {
Node* list = createList();
insertNode(list, "Hello");
insertNode(list, "World");
deleteNode(list, "Hello");
Node* p = list->next;
while (p != NULL) {
printf("%s\n", p->data);
p = p->next;
}
return 0;
}
```
以上代码片段实现了一个简单的单链表的插入和删除操作,可以根据输入的字符串进行对应的操作,以达到实验要求。
总结
通过本次实验,我加深了对单链表数据结构的理解,掌握了链表的基本操作算法,例如插入和删除操作。同时,也了解了时间性能分析在算法设计中的重要性,以及如何通过对链表的操作进行优化以提高算法的效率。通过实践加深理论知识的理解,为将来更深入的学习和应用打下了基础。
2022-07-12 上传
2022-07-12 上传
2021-10-08 上传
2022-07-11 上传
2021-10-12 上传
2023-03-10 上传
2022-12-22 上传
2021-10-11 上传
gjmm89
- 粉丝: 15
- 资源: 19万+
最新资源
- swing针对数据库操作的一个例子
- C、C++笔试题集锦
- Swing事件模型.pdf
- MATLAB 图像处理命令.pdf
- jquery中英文对照手册.doc
- 电子商务基础试卷及答案
- java笔试题目大汇总
- c++笔试题汇总面试宝典
- Loadrunner\LoadRunner自动化测试工具的应用V3[1].0
- Towards Next-Generation Botnets
- P2P as botnet command and control- A deeper insight
- An Advanced Hybrid Peer-to-Peer Botnet
- Army of botnets
- PLSQL User's Guide and Reference.pdf
- omnet++中文使用手册
- 科技管理数据挖掘和基于WebGIS的展示