线性表顺序存储运算的算法实现.docx
- 文档编号:3025037
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:10
- 大小:182.87KB
线性表顺序存储运算的算法实现.docx
《线性表顺序存储运算的算法实现.docx》由会员分享,可在线阅读,更多相关《线性表顺序存储运算的算法实现.docx(10页珍藏版)》请在冰豆网上搜索。
线性表顺序存储运算的算法实现
昆明理工大学信息工程与自动化学院学生实验报告
(2011—2012学年第1学期)
课程名称:
数据结构开课实验室:
信自楼4442011年10月8日
年级、专业、班
学号
姓名
成绩
实验项目名称
线性表顺序存储运算的算法实现
指导教师
教师评语
教师签名:
年月日
一、实验题目
掌握线性表链式存储结构的C语言描述及运算算法的实现;体会last域在算法实现所起的作用;理解合理的存储结构设计与算法的存在的关系
程序功能:
1、主程序
2、链表的建立
3、链表的数据插入
4、链表的数据删除
5、链表的数据输出
二、所用仪器、材料(设备名称、型号、规格等)
兼容计算机一台
Visualc++
三、实验方法、步骤
问题提出算法设计编写程序调试运行结果测试
四、实验过程原始记录(程序清单)
#include
#include
typedefintdatatype;/*设typedef(定义)datatype(数据类型)为int*/
#include
#include
#include
#definemax300//线性表的最大长度设为300
typedefstruct
{
intdata[max];
intlast;
}sequenlist;/*顺序表的名称sequenlist*/
intcaidan()/*菜单函数*/
{
intc=0;
printf("-----------顺序表的基本操作运算--------------\n");
printf("1:
线性表的置空2:
线性表的输入\n");
printf("3:
线性表的输出4:
线性表的插入\n");
printf("5:
线性表的查找6:
线性表的删除\n");
printf("0:
退出系统\n");
printf("-------------------------------------------------\n");
printf("请输入选项【0-6】:
");
do
{
scanf("%c",&c);
}while(!
(c>='0'&&c<'7'));
returnc;
}
voidsetnull(sequenlist*p)
{
p->last=0;
}
intinput(sequenlist*p,intx)
{
inti;//循环变量
intn;//输入数据的个数
printf("请输入要输入的数据个数:
");
scanf("%d",&n);
if(p->last>=max)
{printf("顺序表格已满,请退出运行");}
for(i=1;i<=n;i++)
{
printf("第%d个:
",i);
scanf("%d",&p->data[i-1]);
p->last++;
}
return(n-1);
}
voidoutput(sequenlist*p)
{
printf("\n顺序表的内容为:
\n\n");
printf("表长为:
%d\n",p->last);
intb;
printf("表中的元素为:
\n");
for(b=0;b
printf("%d",p->data[b]);
printf("\n");
}
intinsert(sequenlist*p,intx,inti)
{printf("输入要插入的元素位置:
");
scanf("%d",&i);
printf("输入要插入的元素:
");
scanf("%d",&x);
intj;
if(i<1||i>p->last+1)
{
printf("选择插入的位置错误!
");
return0;
}
if(p->last>=max)
{printf("顺序表格已满.");}
for(j=p->last-1;j>=i-1;j--)//从第i个结点开始后移
p->data[j+1]=p->data[j];
p->data[i-1]=x;
p->last++;
return
(1);
}
voidsearch(sequenlist*p,intt)
{printf("输入要查找的位置:
");
scanf("%d",&t);
inti;
for(i=0;i
{
if(i=t)
{
printf("该元素为:
%d",&p->data[i]);
break;
}
if(i==p->last)
printf("错误\n");
}
}
voidDelete(sequenlist*p,inti)//删除
{
intj;
if(i<1||i>p->last)
{printf("非法位置!
\n");
exit(0);
}
else
{
for(j=i;j<=p->last;j++)
p->data[j-1]=p->data[j];
p->last--;
}
}
voidmain()
{
sequenlist*p;
intkey=1;
inti,x=0;
intt=0;
p=(sequenlist*)malloc(sizeof(sequenlist));
p->last=0;
while(key)
{
switch(caidan())
{
case'1':
setnull(p);break;
case'2':
{
input(p,x);
output(p);
}
break;
case'3':
output(p);break;
case'4':
{
insert(p,x,i);
output(p);
}break;
case'5':
{
search(p,t);
output(p);
}break;
case'6':
{
printf("输入要删除的位置:
");
scanf("%d",&i);
Delete(p,i);
output(p);
}break;
case'0':
key=0;
}
}
}
五、运行结果分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 顺序 存储 运算 算法 实现