数据结构实验教学手册范本Word文档格式.docx
- 文档编号:16717095
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:52
- 大小:264.41KB
数据结构实验教学手册范本Word文档格式.docx
《数据结构实验教学手册范本Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构实验教学手册范本Word文档格式.docx(52页珍藏版)》请在冰豆网上搜索。
6
实验四
栈和队列及其应用
实验五
二叉树及其应用
实验六
图及其应用
实验七
查找
实验八
排序
实验名称顺序表及其应用实验性质验证性实验学时数2学时
一、实验目的
1.深入了解线性表的顺序存储结构。
2.熟练掌握在顺序存储结构上进行插入、删除等操作的算法。
3.通过线性表结构解决现实中的一些问题。
二、实验容
1.线性表的顺序存储结构。
2.顺序存储结构上进行插入、删除等操作的算法。
3.通过线性表结构解决现实中的一些问题。
三
、
实
验
过
程
1、实验题目
[问题描述]
设计一个顺序表,要求:
(1)包含不少于5个元素,并在屏幕上显示。
(2)对建好的顺序表实现查找、插入、删除等操作,并程序执行结果显示到屏幕上。
(3)设计一个选择菜单。
[基本要求]
(1)按实验容编写完整的程序,并上机验证。
(2)实验完成后,提交电子档教师验收程序,并提交填写好的实验报告。
[测试数据]
由学生依据软件工程的测试技术自己确定。
注意测试边界数据。
2、源程序
#include"
stdio.h"
malloc.h"
#defineMAXSIZE200//线性表允许的最大长度
#definedatatypeint
typedefstruct{//定义线性表的结构
datatypedata[MAXSIZE];
//表示线性表(a1,a2,....,an)
intlast;
//last表示线性表的实际长度
}SeqList;
voidinit_SeqList(SeqList*L)//线性表初始化
{
L->
last=-1;
}
intinsert_SeqList(SeqList*L,inti,datatypex)//插入操作
intj;
if((i<
1)||(i>
L->
last+2))
{
printf("
插入位置不合法!
"
);
return0;
}
if(L->
last>
=MAXSIZE-1)
printf("
表已满无法插入!
for(j=L->
last;
j>
=i-1;
j--)
data[j+1]=L->
data[j];
data[i-1]=x;
last++;
插入成功\n"
intDelete_SeqList(SeqList*L,inti)//删除操作
intk;
last+1))
{
删除位置不合法!
return0;
for(k=i;
k<
=L->
k++)
data[k-1]=L->
data[k];
last--;
删除成功!
\n"
intLocation_SeqList(SeqList*L,datatypex)//按值查找
inti,index;
for(i=0;
i<
i++)
data[i]==x)
index=i;
return(index+1);
voidprint(SeqList*L)//打印线性表
inti;
该线性表为:
%4d"
L->
data[i]);
intmain()//主函数voidmain()
SeqListL;
inti,choice;
init_SeqList(&
L);
请输入线性表的长度:
scanf("
%d"
&
L.last);
请输入线性表的元素:
L.last;
i++)
L.data[i]);
do
请选择您想要对线性表的操作:
1:
插入2:
删除3:
查找4:
打印0:
退出\n"
choice);
switch(choice){
case1:
intx,j;
请输入要插入的数的位置和数值:
scanf("
%d%d"
j,&
x);
insert_SeqList(&
L,j,x);
break;
case2:
intm;
请输入要删除的数的位置:
m);
Delete_SeqList(&
L,m);
case3:
intn;
请输入要查找的数:
n);
您要查找的数位于线性表的第%d位.\n"
Location_SeqList(&
L,n));
case4:
print(&
case0:
default:
请选择正确的操作!
break;
}
}while(choice!
=0);
使用!
四实验小结
初步了解线性表的顺序存储结构,及其定义格式。
掌握在顺序表上进行插入、删除等操作的算法。
但在顺序表的操作上不是十分熟练。
五成绩
实验名称单链表及其应用实验性质综合性实验学时数4学时
1.深入了解线性表的链式存储结构。
2.熟练掌握在链式存储结构上进行插入、删除等操作的算法。
1.线性表的链式存储结构。
2.链式存储结构上进行插入、删除等操作的算法。
(1)用头插法或尾插法建立一个单链表,并将结果显示到屏幕上。
(2)对建好的单链表实现查找、插入、删除、修改等操作。
[提高篇](选作)
建立一个有序单链表,实现上述操作。
typedefstructNode
{chardata;
structNode*next;
}Node,*linklist;
voidcreatefromtail(linklistL)
{Node*r,*s;
intflag=1;
charc;
r=L;
请输入线性表的元素以$结束:
while(flag)
{c=getchar();
if(c!
='
$'
)
{s=(Node*)malloc(sizeof(Node));
s->
data=c;
r->
next=s;
r=s;
else{
flag=0;
r->
next=NULL;
charget(linklistL,inti)
{intj;
Node*p;
if(i<
=0)return0;
p=L;
j=0;
while((p->
next!
=NULL)&
&
(j<
i))
{p=p->
next;
j++;
if(i==j)returnp->
data;
elsereturn0;
intinslist(linklistL,inti,charx)
{Node*pre,*s;
=0)
{printf("
pre=L;
k=0;
while(pre!
=NULL&
i-1)
{pre=pre->
k=k+1;
if(!
pre)
}
else
{s=(Node*)malloc(sizeof(Node));
s->
data=x;
next=pre->
pre->
}}
intdeilist(linklistL,inti)
{Node*pre,*r;
pre=L;
while(pre->
{pre=pre->
k=k+1;
(pre->
next))
{printf("
删除的节点位置不合法!
r=pre->
next=r->
free(r);
return1;
voidalterlist(linklistL,inti,charx)
{intj;
linklistp;
修改位置不合法!
{while((p->
p->
修改成功!
voidprint(linklistL)
{linklistp;
p=L->
while(p)
%c"
p->
data);
p=p->
printf("
intmain()
{linklistL;
inti,choice,x,j;
createfromtail(L);
do{
修改5:
charc;
请输入要插入的字符的位置:
j);
请输入要插入的字符:
c=getchar();
inslist(L,j,c);
插入字符后的线性表为:
print(L);
请输入要删除的字符的位置:
deilist(L,m);
删除字符后的线性表为:
请输入要查找的字符的位置:
您要查找的字符为%c.\n"
get(L,n));
inta;
charx;
请输入要修改的字符的位置:
a);
请输入要修改的字符:
x=getchar();
alterlist(L,a,x);
修改字符后的线性表为:
case5:
print(L);
break;
四
小
结
初步了解线性表的链式存储结构,及其定义格式。
掌握了在链表上进行插入、删除等操作的算法。
对链表的了解不是很深入,在其使用上往往会犯一些错误比如在链表中进行插入插不到指定位置,删除时位置错误等。
五
成
绩
实验名称线性表综合练习实验性质设计性实验学时数6学时
1.根据实际问题,应用线性表的顺序存储结构。
2.根据实际问题,深入理解线性表的链式存储结构。
1.线性表的两种存储结构。
2.不同存储结构上进行插入、删除等操作的算法。
设计一个学生信息系统,要求:
(1)每条信息包含学号,,性别,院系,宿舍等项。
(2)能够对数据信息进行查找,插入,删除等。
(3)选择合适的存储结构,在主程序上运行,验证其正确性,并写出程序执行结果。
#include"
string.h"
stdlib.h"
charnumber[10];
charname[10];
charsex[4];
chardepartment[16];
chardorm[6];
inti,n;
请输入学生数:
charnumber[10],name[10],sex[4],department[16],dorm[6];
Node*r,*s;
请输入学生的信息!
n;
请输入学生学号:
%s"
number);
请输入学生:
name);
请输入学生性别:
sex);
请输入学生院系:
department);
请输入学生宿舍号:
dorm);
s=(Node*)malloc(sizeof(Node));
strcpy(s->
number,number);
name,name);
sex,sex);
department,department);
dorm,dorm);
r=s;
r->
intinslist(linklistL)
Node*pre,*s;
intk,i;
请输入插入位置"
i);
pre=pre->
}
s=(Node*)malloc(sizeof(Node));
strcpy(s->
}
intget(linklistL,inti)
p=p->
if(i==j)
该学生的信息为:
学号:
%s"
number);
:
name);
性别:
sex);
学院:
department);
宿舍号:
dorm);
intdeilist(linklistL)
Node*pre,*r;
pre=pre->
linklistp;
linklistL;
查找4:
inslist(L);
deilist(L);
请输入要查找的学生的位置:
get(L,n);
对链式表有了进一步的了解,能够利用链式表解决一些实际问题。
了解了链式表的优势,他不会造成空间的浪费,对于插入和删除操作上链式表比顺序表有
明显的优势。
实验名称栈和队列及其应用实验性质设计性实验学时数4学时
1.掌握栈与队列的抽象数据类型描述及特点。
2.掌握栈和队列的顺序和链式存储结构与基本算法实现。
3.掌握栈和队列在实际问题中的应用和基
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验教学 手册 范本