资源描述:
《数据结构实验综合》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一一.实验题目:线性表的顺序存储结构二.实验目的:1.掌握使用TurboC上机调试线性表的基本方法;2.掌握线性表的概念及其顺序存储结构3.熟练采用顺序存储结构实现线性表的基本操作4.能熟练掌握顺序存储结构中基本算法的实现三.实验内容:建立包含若干个元素的顺序表,并实现插入,删除,修改且能将结果显示在屏幕上输出.四.实验步骤:1.先定义顺序表的数据类型,以0~n-1序号建立顺序表,并将此单独定义成一个函数,以便后来反复使用,也为插入,删除和合并等操作定义成单独函数形式.2.算法实现:#definemaxsize50structList{elemt
2、ypelist[maxsize];intsize;}Intinsert(elemtypelist[],int*num,inti,elemtypex)intj;if(i<0//i>*num+1){print(“error!”);/*插入位置出错*/returnfalse;}if(*num>=maxnum-1){printf(“overflow!”);/*表已满*/returnfalse;}For(j=*num;j>=i;j--)List[j+1]=list[j];/*数据元素后移*/List[i]=x;/*插入X*/(*num)++;/*长度加1*/R
3、eturntrue;}intdelete(elemtypelist[],int*num,inti)Intj;If(i<0//i>*num){printf(“error!”);returnfalse;}For(j=i+1;j<=*num;j++)List[j-1]=list[j];(*num)--;Returntrue;}Voidmerge(elemtypela[],elemtypelb[],elemtype**lc){inti,j,k;intla-length,lb-length;i=j=0;k=0;la-length=length(la);lb-l
4、ength=length(lb);/*取表La和Lb的长度*/initiate(lc);/*初始化表Lc*/while(i<=la-length&&j<=lb-length){a=get(la,I);b=get(lb,j);if(a
5、,b);}}五.实验结果:实验二一、实验题目:线性表的链式存储结构二、实验目的:1.掌握线性表的链式存储概念及其结构特点2.熟练掌握线性表链式存储的基本运算及其实现3.掌握单链表、循环链表和双向链表算法表示区别与联系三、实验描述:1.先建立一个空的单链表,并将其初始化后,进行插入节点和删除节点操作。2.单链表算法实现:Typedefstructslnode{Elemtypedata;structslnode*next;}slnodetype;slnodetype*p,*q,*s;intInitiate(slnodetype**h){If((*h=(s
6、lnodetype*)malloc(sizeof(slnodetype)))==NULL)returnFALSE;(*h)->next=NULL;returnTRUE;}intinsert(slnodetype*h,inti,Elemtypex){slnodetype*p,*q,*s;intj=0;q=p=h;while(p!=NULL&&jnext;j++;}if(j!=i-1){printf(“Error!”);returnFALSE;if((s=(slnodetype*)malloc(sizeof(slnodety
7、pe)))==NULL)returnFALSE;s->data=x;s->next=p;q->next=s;returnTRUE;}3.双向链表算法实现:typedefstructnode{Elemtypedata;structnode*prior,*next;}dlnodetype;intinsert_dul(dlnodetype*head,inti,Elemtypex){/*在带头结点的双向链表中第i个位置之前插入元素x*/dbnodetype*p,*s;intj;p=head;j=0;while(p!=NULL&&jnext;
8、j++;}if(j!=i
9、
10、i<1){printf(“Error!”);returnFALSE;}if((s