"单链表的插入和删除实验报告:对线性表的逻辑结构和链式存储结构进行探究与分析"
版权申诉
187 浏览量
更新于2024-03-09
收藏 1023KB DOCX 举报
本实验旨在通过对单链表的插入和删除操作进行实验,深入了解和掌握线性表的逻辑结构和链式存储结构,并掌握单链表的基本算法及相关的时间性能分析。
实验要求建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串,并根据输入的字符串,先找到相应的结点,然后进行删除操作。
实验源代码如下所示:
```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 *str)
{
Node *p = head;
while (p->next != NULL)
{
p = p->next;
}
Node *newNode = (Node *)malloc(sizeof(Node));
strcpy(newNode->data, str);
newNode->next = NULL;
p->next = newNode;
}
void deleteNode(Node *head, char *str)
{
Node *p = head->next;
Node *pre = head;
while (p != NULL)
{
if (strcmp(p->data, str) == 0)
{
pre->next = p->next;
free(p);
p = pre->next;
}
else
{
pre = p;
p = p->next;
}
}
}
void displayList(Node *head)
{
Node *p = head->next;
while (p != NULL)
{
printf("%s ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
Node *head = createList();
insertNode(head, "apple");
insertNode(head, "banana");
insertNode(head, "orange");
insertNode(head, "apple");
printf("The original list is: ");
displayList(head);
deleteNode(head, "apple");
printf("After deleting 'apple', the list is: ");
displayList(head);
return 0;
}
```
以上是本次单链表的插入和删除实验的程序源代码。在这次实验中,我们建立了一个数据域定义为字符串的单链表,并通过插入和删除操作,成功实现了对单链表的操作。通过该实验,我们深入了解了单链表的基本算法及相关的时间性能分析,加深了对线性表的逻辑结构和链式存储结构的掌握,为进一步深入学习和应用数据结构打下了坚实的基础。
点击了解资源详情
点击了解资源详情
1562 浏览量
2021-09-26 上传
654 浏览量
476 浏览量
258 浏览量
2021-10-14 上传
2562 浏览量

G11176593
- 粉丝: 6947
最新资源
- 利用SuperMap C++组件在Qt环境下自定义地图绘制技巧
- Portapps:Windows便携应用集合的介绍与使用
- MATLAB编程:模拟退火至神经网络算法合集
- 维美短信接口SDK与API文档详解
- Python实现简易21点游戏教程
- 一行代码实现Swift动画效果
- 手机商城零食网页项目源码下载与学习指南
- Maven集成JCenter存储库的步骤及配置
- 西门子2012年3月8日授权软件安装指南
- 高效测试Xamarin.Forms应用:使用FormsTest库进行自动化测试
- 深入金山卫士开源代码项目:学习C语言与C++实践
- C#简易贪食蛇游戏编程及扩展指南
- 企业级HTML5网页模板及相关技术源代码包
- Jive SDP解析器:无需额外依赖的Java SDP解析解决方案
- Ruby定时调度工具rufus-scheduler深度解析
- 自定义Android AutoCompleteTextView的实践指南