版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
郑州轻工业学院
《数据结构》课程实验
实验报告
题目:单链表表的基本操作及C语言实现
专业:__________信息管理与信息系统
班级:_______________11-01________________________
姓名:________________高博文________________________
完毕日期:____________2023/5/23___________________
一、实验内容
用C语言实现单链表的建立插入删除查找,合并等内容
二、实验目的
掌握链表的基本操作:插入、删除、查找等运算,可以灵活应用链表这种数据结构,进一步对
链表链式结构的了解。
三.源程序代码
#include<stdio.h>
#inc1ude<stdlib.h>
typedefintE1emtype:
typedefintStatus;
typedefstructnode〃定义存储节点
(
intdata;//数据域
structnode*next;//结构体指针
}*link1ist,node;//结构体变量,结构体名称
linklistcreat(intn)//创建单链表
(
°linklisthead,r,p;〃定义头指针r,p,指针
intx,i;
head=(node*)malloc(sizeof(node));〃生成头结点
。r=head;//r指向头结点
printf("输入数字:\n");
°for(i=n;i>0;i--)//for循环用于生成第一个节点并读入数据
°{
oscanf(n%dx);
。叩二(node*)malloc(sizeof(node));
p->data=x;〃读入第一个节点的数据
阿->next=p;//把第一个节点连在头结点的后面
。尸P;//循环以便于生成第二个节点
r->next=O;//生成链表后的断开符
returnhead;//返回头指针
)
voidoutput(linklisthead)//输出链表
(
linklistp;
p=head->next;
o
(
printf(n%3dH,p->data);
ep=p—>next;
0)
while(p);
oprintf("\n");
)
Statusinsert(linklist&1,inti,Elemtypee)//插入操作
(
“ntj=0;
linklistp=l,s;
while(j<i-l&&p)
(
叩二p->next;
++j:
)
if(!p|Ij>i-1)
^return-1;
e1se
gs=(node*)ma11oc(sizeof(node));
s->data=e;
。s->next=p->next;
®p->next=s;
dreturn1;
°)
)
Statusde1ect(linklist&1,inti,Elemtype&e)〃删除操作
(
Antj=0;
linklistp=1,q;
whi1e(j<i-1&&p->next)
(
叩二P->next;
++j;
)
if(!p->next|Ij>i-1)
^return-1;
else
(
oq=p->next;
叩->next=q->next;
e=q->data;
free(q);
®return1;
voidcombine(1ink1istla,link!istlb)//合并单链表
0node*pa,*pb,*pc;
olinklist1c;
。pa=la->next;
pb=lb—>next;
lc=pc=la;
while(pa&&pb){
oif(pa->data<=pb->data){
gpc—>next=pa;
gpc=pa;
^pa=pa->next;
)
e1se{pc->next=pb;pc=pb;pb=pb->next;}
)
叩c->next=pa?pa:pb;
free(lb);
)
StatusGetE1em(linklist1,inti,Elemtype&e)〃查找操作
(
。linklistp;
°intj;
p=l->next;
J=1;
。whi1e(p&&j<i)
p=p->next;
0++j;
)
。if(!PIIj>i)
oreturn-2;
e=p->data;
oreturne;
)
voidmain()
(
o1inklist1a,lb;
Antn;
inti,j;
E1emtypee;
printf("请输入第一个链表:\nH);
printf("输入链表元素的个数:\n");
seanf(n%dn,&n);
01a=creat(n);
叩rintf("输出链表:\n)
output(la);
叩rintf(”请输入要查找元素的位置:\n");
scanf(u%dM,&i);
j=GetE1em(la,i,e);
中rintf("所要查找的元素是%d\n",j);
Printf("请输入插入位置和元素:'n");
scanf("%d%d”,&i,&e);
insert(la,i,e);
Printf("插入后的链表:\n");
output(1a);
Printf("请输入要删除的位置:\n");
scanf("%d",&i);
delect(1a,i,e);
Printf("删除的那个元素是:%d\n",e);
printf("输出删除后的顺序表:\n");
outpul(la);
oprintf("请输入第一个非递减链表:\n");
。printf("输入链表元素的个数:\n");
seanf("%d",&n);
la=creat(n);
printf("输出链表:\n");
•output(1a);
printf("请输入第二个非递减链表:\n");
•printf("输入链表元素的个数:\n");
scanf("%d",&n):
1b=creat(n);
oprintf("输出链表:\n");
oulput(lb);
combine(1a,lb);
printf("输出合并后的链表:\n");
°output(la);
)
运营结果如下:
,*C:\Users\moyuxuan\Desktop\Debug\thl.exe"
输入链袤元去的个数:
谿入数字:
1
3
5
输出链表:
1357
请输入要查找元素的位置:
2
2
立人后的链表:
1535?
请输入要删除的位置:
#犒翻嘉谭塞
却整需臂表:
■入数字:
1
2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度农产品品牌推广与营销合同
- 2024年度国际市场品牌推广合同
- 2024年度压路机行业培训与人才交流合同
- 软骨替代品市场发展现状调查及供需格局分析预测报告
- 2024年度0KV变电站工程安全防护合同
- 球拍用保护罩市场发展预测和趋势分析
- 2024年度建筑设计与监理合同
- 2024年度兰州土地使用权转让合同
- 合成材料制圣诞树市场发展现状调查及供需格局分析预测报告
- 2024年度品牌方与带货主播合作推广特定商品的合同范本
- 中医儿科学 泄泻
- YY/T 0471.2-2004接触性创面敷料试验方法 第2部分:透气膜敷料水蒸气透过率
- SB/T 11137-2015代驾经营服务规范
- GB/T 3798-2021汽车大修竣工出厂技术条件
- GB/T 2899-2017工业沉淀硫酸钡
- GB/T 18690.3-2002农业灌溉设备过滤器自动清洗网式过滤器
- PythonNumPy教学讲解课件
- 正高级会计师答辩面试资料
- 小学数学六年级《外方内圆和外圆内方》优秀教学设计
- 急性中毒现场急救
- 国学经典-诚信的课件
评论
0/150
提交评论