资源描述:
《青海大学软件技术工程实验三四》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、软件基础基础实验报告系别:机械工程学院班级:材料科学与工程学号:a+++++++++姓名:++++++++实验时间:2012/9/9实验地点:网络中心网3实验环境:vc6.0实验名称:线性表的初始化运算、插入、删除运算实验目的:(1)学习线性表中的顺序表的结构(2)学会建立顺序表(3)学会线性表的顺序存储下的插入运算(4)学习线性表中的顺序表的结构。(5)学会线性表的顺序存储下的删除运算。实验内容:建立一个空间容量为10,长度为8的顺序存储空间(参考课件中算法描述)输入数据为教材第24页图2.7,现要求在第2个元素之前插入87,然后在第9个元素之前插入14如
2、下图所示。把插入后的结果打印出来。(参考课件中算法描述)建立一个空间容量为10,长度为8的顺序存储空间(参考实验三)输入数据为教材第24页图2.7,现要求删除线性表第1个元素(删除元素29),然后再删除线性表的第六个元素(删除元素31)。把删除后的线性表打印出来。如下图所示:程序代码:#include"stdio.h"#include"stdlib.h"#include"string.h"voidinput(int*v,int*n)\输入函数{inti;printf("请输入数据:");for(i=0;i<*n;i++)scanf("%d",v+i);}v
3、oidoutput(int*v,int*n)\输出函数{inti;printf("线性表中的元素是:");for(i=0;i<*n;i++)printf("%d",*(v+i));}int*initsl(intm,int*n)\线性表的插入{int*v;v=(int*)malloc(m*sizeof(int));*n=0;returnv;}voidinsl(int*v,intm,int*n,inti,intb){intj;if(*n==m){printf("listoverflow!");return;}if(i>*n-1)i=*n;if(i<1)i=1
4、;for(j=*n;j>=i;j--)v[j]=v[j-1];v[i-1]=b;*n=*n+1;return;}voiddelsl(int*v,intm,int*n,inti)\线性表的删除运算{intj;if(*n==0){printf("thelistisempty!");return;}if(i<1
5、
6、i>*n){printf("thenodeisnot!");return;}for(j=i;j<=*n;j++)v[j-1]=v[j];*n=*n-1;return;}voidmain()\主函数{int*v=NULL,*n=NULL,m,i,b;n
7、=(int*)malloc(sizeof(int));\建立线性表printf("请输入线性表的空间大小:");scanf("%d",&m);v=initsl(m,n);printf("请输入线性表的实际长度:");scanf("%d",n);input(v,n);output(v,n);getchar();printf("请输入要插入的位置i和元素b:");scanf("%d%d",&i,&b);insl(v,m,n,i,b);output(v,n);getchar();printf("请输入要插入的位置i和元素b:");scanf("%d%d"
8、,&i,&b);insl(v,m,n,i,b);output(v,n);printf("请输入要删除元素的位置:");scanf("%d",&i);delsl(v,m,n,i);output(v,n);printf("请输入要删除元素的位置:");scanf("%d",&i);delsl(v,m,n,i);output(v,n);}实验结果:正常输入时:输入错误时:实验心得:在实现本次实验程序中,发现如果需要连续多次插入/删除时,需要重复多次代码,这样很麻烦。如果能一次循环完成该功能就好了。望老师指点。还有在非正常输入的情况下,程序并不能一开始就提示
9、出错。如果能实现就完善多了。