资源描述:
《线性表顺序存储运算的算法实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、昆明理工大学信息工程与自动化学院学生实验报告(2011—2012学年第1学期)课程名称:数据结构开课实验室:信自楼4442011年10月8日年级、专业、班学号姓名成绩实验项目名称线性表顺序存储运算的算法实现指导教师教师评语教师签名:年月日一、实验题目掌握线性表链式存储结构的C语言描述及运算算法的实现;体会last域在算法实现所起的作用;理解合理的存储结构设计与算法的存在的关系程序功能:1、主程序2、链表的建立3、链表的数据插入4、链表的数据删除5、链表的数据输出二、所用仪器、材料(设备名称、型号
2、、规格等)兼容计算机一台Visualc++三、实验方法、步骤问题提出算法设计编写程序调试运行结果测试操作菜单线性表的删除线性表的输出及表长线性表的输入线性表的置空线性表的查找线性表的插入四、实验过程原始记录(程序清单)#include#includetypedefintdatatype;/*设typedef(定义)datatype(数据类型)为int*/#include#include//包含清屏函数的类#include
3、#definemax300//线性表的最大长度设为300typedefstruct{intdata[max];intlast;}sequenlist;/*顺序表的名称sequenlist*/intcaidan()/*菜单函数*/{intc=0;printf("-----------顺序表的基本操作运算--------------");printf("1:线性表的置空2:线性表的输入");printf("3:线性表的输出4:线性表的插入");printf("5:线性
4、表的查找6:线性表的删除");printf("0:退出系统");printf("-------------------------------------------------");printf("请输入选项【0-6】:");do{scanf("%c",&c);}while(!(c>='0'&&c<'7'));returnc;}voidsetnull(sequenlist*p){p->last=0;}intinput(sequenlist*p,intx){inti;//循环变量in
5、tn;//输入数据的个数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("顺序表的内容为:");printf("表长为:%d",p->la
6、st);intb;printf("表中的元素为:");for(b=0;blast;b++)printf("%d",p->data[b]);printf("");}intinsert(sequenlist*p,intx,inti){printf("输入要插入的元素位置:");scanf("%d",&i);printf("输入要插入的元素:");scanf("%d",&x);intj;if(i<1
7、
8、i>p->last+1){printf("选择插入的位置错误!");return0;
9、}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;ilast;i++){if(i=t){printf("该元素为:
10、%d",&p->data[i]);break;}if(i==p->last)printf("错误");}}voidDelete(sequenlist*p,inti)//删除{intj;if(i<1
11、
12、i>p->last){printf("非法位置!");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