资源描述:
《软件基础实验指导书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实骑一实验二实验三实验四实验五实骑六实验七实验八实验九实验十顺序表的插入、删除单链表的插入、删除顺序栈的入栈、出栈循环队列的入队、出队稀疏矩阵的转置二叉排序树的建立、遍历直接插入排序直接选择排序顺序、二分查找二叉排序树查找附录实验报告要求13151920222528实验一顺序表的插入.删除(2学时)一、实验目的1、理解线性表的顺序存储结构;2、能熟练建立一个顺序表,并能对其进行插入、删除等基本操作;3、能熟练运用宏定义、函数调用。二、实验内容从键盘输入10个整数,建立一顺序表(顺序表最人长度为20),用顺序表完
2、成在任意一个位置插入任意整数元素以及删除任意位置数据元素的操作(插入、删除位置及要插入元素数值均从键盘输入),进行完任一操作后将顺序表中的内容及表长输出。三、参考源程序#include#defineMAXLEN20typedefintelemtype;typedefstruct{elemtypeList[MAXLEN];intNum;JSeqlist;intinsert(Seqlist*la,inti,elemtypex);intdel(Seqlist*la,inti);voidoutput(
3、Seqlist*la);main(){Seqlistla;intm,i;elemtypex;la.Num=-l;printf(MPleaseinputdata:*1);for(i=0;i<=9;i++){++la.Num;scanf(n%dn,&la.List[i]);printf(HPleaseinputthevalueofm:m=l-一insertm=2---deletem=M);scanf(H%dH,&m);if(m==l){printf(HPleaseinputinsertlocationand
4、insertdata:*');scanf(”%d%d”,&i,&x);insert(&la,i,x);output(&la);}elseif(m==2){printf(HPleaseinputdeletelocation:'1);scanf(H%du,&i);del(&la,i);output(&la);}elseprintf("Thevalueofmiswrong!");)intinsert(Seqlist*la,inti,elemtypex){intj;if(ila->Num){printf(H
5、插入位置不合理!”);return0;}elseif(la->Num==MAXLEN-1){printf("表满,不能插入!”);return0;}else{for(j=la->Num;j>=i;j—)la->List[j+l]=la->List
6、j];la->List[i]=x;la->Num++;return1;intdel(Seqlist*la,inti){intj;if(ila->Num){prinlf("thepositionisinvalid");return0;}else{
7、for(j=i+1;j<=la->Num;j++)la->List[j-l]=la->List[j];la->Num—;return1;voidoutput(Seqlist*la){intm;printf(“当前的线性表为”);for(m=0;m<=la->Num;m++)printf(u%dMJa->List[m]);printf(n表长为%dr',la->Num+l);四、思考1.设顺序表L中的数据元素按递增排列,编写一个算法,将数据元素x插入到顺序表L的适当位置上,以保持顺序表的有序性。2.设计一
8、算法实现删除顺序表a中第i个元素起的k个元素。typedefstruct{intelem[100];intbngth;/*顺序表的长度(即最大下标值)*/JSqList;3.设已有线性表la的数据结构定义同上,编写一个算法,删除顺序表la中所有值为x的数据元素。实验二单链表的插入.删除(2学时)一、实验目的1、理解线性表的链式存储结构;2、能熟练建立一个单链表,并能对其进行插入、删除等基本操作;3、能理解指针的指针类型的运用。%1.实验内容首先建立一个数据域为整数的由10个结点组成的单链表,然后用单链表完成在任
9、意一个位置插入任意整数元素以及删除任意位置数据元素的操作(插入、删除位置及耍插入元素数值均从键盘输入),进行完任一操作后将顺序表中的内容及表长输岀。三、参考源程序#include#include#includetypedefintelemtype;structnodefelemtypedata;structnode*next;}