欢迎来到天天文库
浏览记录
ID:25682315
大小:45.50 KB
页数:9页
时间:2018-11-22
《线性表的基本操作实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验一:线性表的基本操作【实验目的】学习掌握线性表的顺序存储结构、链式存储结构的设计与操作。对顺序表建立、插入、删除的基本操作,对单链表建立、插入、删除的基本操作算法。【实验内容】1.顺序表的实践1)建立4个元素的顺序表s=sqlist[]={1,2,3,4,5},实现顺序表建立的基本操作。2)在sqlist[]={1,2,3,4,5}的元素4和5之间插入一个元素9,实现顺序表插入的基本操作。3)在sqlist[]={1,2,3,4,9,5}中删除指定位置(i=5)上的元素9,实现顺序表的删除的基本操作。2.单链表的实践3.1)建立一个包括头结点和4个
2、结点的(5,4,2,1)的单链表,实现单链表建立的基本操作。2)将该单链表的所有元素显示出来。3)在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插入的基本操作。4)在一个包括头结点和5个结点的(5,4,3,2,1)的单链表的指定位置(如i=2)删除一个结点,实现单链表删除的基本操作。5)实现单链表的求表长操作。【实验步骤】1.打开VC++。2.建立工程:点File->New,选Project标签,在列表中选Win32ConsoleApplication,再在右边的框里为工程起好名字,选好路径,点OK->finish。至此工程建立完毕。
3、3.创建源文件或头文件:点File->New,选File标签,在列表里选C++SourceFile。给文件起好名字,选好路径,点OK。至此一个源文件就被添加到了刚创建的工程之中。4.写好代码5.编译->链接->调试1、#include"stdio.h"#include"malloc.h"#defineOK1#defineOVERFLOW-2#defineERROR0#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefintElemType;typedefintStatus;typedefstruct
4、{ElemType*elem;intlength;intlistsize;}SqList;StatusInitList(SqList&L){inti,n;L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)return(OVERFLOW);printf("输入元素的个数:");scanf("%d",&n);printf("输入各元素的值:");for(i=0;i5、ST_INIT_SIZE;returnOK;}StatusListInsert(SqList&L,inti,ElemTypee){ElemType*newbase,*p,*q;if(i<16、7、i>L.length+1)returnERROR;if(L.length>=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)return(OVERFLOW);L.elem=newbase;L.listsize8、+=LISTINCREMENT;}q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}StatusListDelete(SqList&L,inti,ElemType&e){ElemType*p,*q;if((i<1)9、10、(i>L.length))returnERROR;p=&(L.elem[i-1]);e=*p;q=L.elem+L.length-1;for(++p;p<=q;++p)*(p-1)=*p;--L.length;11、returnOK;}voidVisitList(SqListL){inti;for(i=0;i12、表中的值:");ListDelete(L,i,e);VisitList(L);}2、#incl
5、ST_INIT_SIZE;returnOK;}StatusListInsert(SqList&L,inti,ElemTypee){ElemType*newbase,*p,*q;if(i<1
6、
7、i>L.length+1)returnERROR;if(L.length>=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)return(OVERFLOW);L.elem=newbase;L.listsize
8、+=LISTINCREMENT;}q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}StatusListDelete(SqList&L,inti,ElemType&e){ElemType*p,*q;if((i<1)
9、
10、(i>L.length))returnERROR;p=&(L.elem[i-1]);e=*p;q=L.elem+L.length-1;for(++p;p<=q;++p)*(p-1)=*p;--L.length;
11、returnOK;}voidVisitList(SqListL){inti;for(i=0;i12、表中的值:");ListDelete(L,i,e);VisitList(L);}2、#incl
12、表中的值:");ListDelete(L,i,e);VisitList(L);}2、#incl
此文档下载收益归作者所有