数据结构 单链表操作验证.docx
- 文档编号:2465391
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:11
- 大小:113.10KB
数据结构 单链表操作验证.docx
《数据结构 单链表操作验证.docx》由会员分享,可在线阅读,更多相关《数据结构 单链表操作验证.docx(11页珍藏版)》请在冰点文库上搜索。
数据结构单链表操作验证
实验一单链表操作验证
一、实验目的
1.理解数据结构中带头结点单链表的定义和逻辑图表示方法。
2.掌握单链表中结点结构的C++描述。
3.熟练掌握单链表的插入、删除和查询算法的设计与C++实现。
4.熟练掌握简单的演示菜单与人机交互设计方法。
二、实验内容
1.编制一个演示单链表插入、删除、查找等操作的程序。
三、实验步骤
1.需求分析
本演示程序用VC++编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。
①输入的形式和输入值的范围:
插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。
在所有输入中,元素的值都是整数。
②输出的形式:
在所有三种操作中都显示操作是否正确以及操作后单链表的内容。
其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
③程序所能达到的功能:
完成单链表的生成(通过插入操作)、插入、删除、查找操作。
④测试数据:
A.建立操作中依次输入1,2,3,4,5,生成一个单链表
B.插入操作中依次输入6,插入单链表
C.查找操作中依次输入2,返回这,1个元素在单链表中的位
D.删除操作中依次输入1,删除位于1的元素
2.概要设计
1)基本操作:
structstu*creat()
操作结果:
构造一单链表
Structstu*ins(structstu*head)
初始条件:
单链表已存在
操作结果:
插入元素
Structstu*del(structstu*head)
初始条件:
单链表已存在
操作结果:
删除元素
Voidfind(structstu*head)
初始条件:
单链表L已存在
操作结果:
查找元素
Voidoutput(structstu*head)
初始条件:
单链表L已存在
操作结果:
输出元素
Voidmain()
主函数
2)本程序包含6个函数:
①主函数main()
②显示单链表内容函数output()
③建立元素函数creat()
④插入元素函数ins()
⑤删除元素函数del()
⑥查找元素函数find()
主函数控制五个函数:
3.详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。
对主程序和其他模块也都需要写出伪码算法。
1)结点类型和指针类型
structstu
{
intnum;
charname[20]
floatChinese,maths,English;
structstu*next;
};
2)单链表的基本操作
Voidoutput(structstu*head)
(伪码算法)
Structstu*creat()
(伪码算法)
Structstu*ins(structstu*head)
(伪码算法)
Structstu*del(structstu*head)
(伪码算法)
Voidfind(structstu*head)
(伪码算法)
Voidmain()
(伪码算法)
4.程序源码
#include
#include
#include
#defineNULL0
#defineLENsizeof(structstu)
structstu
{
intnum;
charname[20];
floatChinese,maths,English;
structstu*next;
};
intn;
voidoutput(structstu*head)
{
structstu*p;
p=head;
printf("学号\t姓名\t语文\t数学\t英语\t\n");
for(p=head;p!
=NULL;p=p->next)
{
printf("%d\t%s\t%.1f\t%.1f\t%.1f\n",p->num,p->name,p->Chinese,p->maths,p->English);
}
}
structstu*creat()
{
structstu*head;
structstu*p1,*p2;
n=0;
printf("学号,姓名,语文,数学,英语:
\n");
printf("输入00000停止!
\n");
p1=p2=(structstu*)malloc(LEN);
scanf("%d%s%f%f%f",&p1->num,p1->name,&p1->Chinese,&p1->maths,&p1->English);
head=NULL;
while(p1->num!
=0)
{
n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=(structstu*)malloc(LEN);
scanf("%d%s%f%f%f",&p1->num,p1->name,&p1->Chinese,&p1->maths,&p1->English);
}
p2->next=NULL;
return(head);
}
structstu*ins(structstu*head)
{
structstu*p0,*p1,*p2;
printf("请输入插入的学生信息:
\n");
p1=head;
p0=creat();
if(head==NULL)
{
head=p0;p0->next=NULL;
}
else{
while((p0->num>p1->num)&&(p1->next!
=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num
{
if(head==p1)head=p0;
elsep2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
return(head);
}
structstu*del(structstu*head)
{
structstu*p1,*p2;
intnum;
if(head==NULL)
{
printf("\n链表为空!
\n");
}
else
p1=head;
printf("请输入所需删除号码:
\n");
scanf("%d",&num);
while(num!
=p1->num&&p1->next!
=NULL)
{
p2=p1;p1=p1->next;
}
if(num==p1->num)
{
if(p1==head)head=p1->next;
else
p2->next=p1->next;
printf("删除:
%d\n",num);
n=n-1;
}
else
printf("对不起,%d不在链表中!
\n",num);
return(head);
}
voidfind(structstu*head)
{
structstu*p1;
intnum;
printf("请输入所需查找号码:
\n");
scanf("%d",&num);
if(head==NULL)
{
printf("\n链表为空!
\n");
}
else
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{
p1=p1->next;
}
if(num==p1->num)
{
printf("学号:
%d姓名:
%s语文:
%.1f数学:
%.1f英语:
%.1f\n",p1->num,p1->name,p1->Chinese,p1->maths,p1->English);
}
else
printf("对不起,%d不在链表中!
\n",num);
}
voidmain()
{
structstu*head;
intselect;
while
(1)
{
printf("1.建立2.插入3.删除4.查找5.输出6.退出\n");
printf("请输入操作序号:
\n");
scanf("%d",&select);
switch(select)
{
case1:
head=creat();break;
case2:
head=ins(head);break;
case3:
head=del(head);break;
case4:
find(head);break;
case5:
output(head);break;
case6:
exit(0);
}
}
}
5.调试分析
在往电脑中输入程序时,由于马虎,有的落了标点符号,有的落了或写错了字母,有的语句也出现了错误,终于将它们一一修正过来。
6.使用说明
程序名为LinkList.exe,运行环境为VisualC++。
程序执行后显示
1.建立2.插入3.删除4.查找5.输出6.退出
请输入操作序号:
然后输入数字选择执行不同的功能。
要求首先输入足够多的插入元素,才可以进行其他的操作。
每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。
选择1:
显示“学号,姓名,语文,数学,英语:
输入00000停止!
”
要求输入足够多的元素。
选择2:
显示“请输入插入的学生信息:
”
要求输入要插入的位置和元素的值(都是整数)。
选择3:
显示“请输入所需删除号码:
”
要求输入要删除元素的位置,执行成功后返回元素的值。
选择4:
显示“请输入所需查找号码:
”
要求输入要查找元素的值,执行成功后返回元素在表中的位置。
选择5:
显示“学号姓名语文数学英语”
要求输出所有元素的值。
选择6:
显示“Pressanykeytocontinue”
要求按任意键继续操作或退出。
7.测试结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单链表操作验证 单链表 操作 验证