武汉工商学院《数据结构》课程实验实训报告实验名称顺序存储实验序号2学号14302043姓名陈前方班级信管本2实验日期2015.10.21指导教师金照林成绩一、实验目的和要求目的:掌握线性表顺序存储结构的描述,学会针对顺序存储线性表的基本操作。要求:掌握C语言结构化程序设计思想,结构数据类型,指针数据类型。二、实验具体内容及步骤1.实现课本中顺序表的基本操作,并编制主函数实际运行验证其正确性。2.在实验题1的基础上设计一个有序顺序表,要求:(1)有序顺序表的操作集合有如下操作:初始化、求数据元素个数、插入、删除和取数据元素。有序顺序表与顺序表的主要区别是:有序顺序表中的数据元素按数据元素值非递减有序。(2)设计一个测试主函数,实际运行验证所设计有序顺序表的正确性。3.实现课本中单链表的基本操作,并编制主函数实际运行验证其正确性。4.在实验题3的基础上,设计单循环链表(区别见课本p47),要求:(1)单循环链表抽象数据类型包括初始化操作、求数据元素个数操作、插入操作、删除操作、取数据元素操作。(2)设计一个测试主函数,实际运行验证所设计单循环链表的正确性。三、实验结果与分析(程序代码按序粘贴在下面,并将运行结果截图)1.#includestdio.h#defineMaxSize100typedefintDataType;typedefstruct{DataTypelist[MaxSize];intsize;}SeqList;武汉工商学院voidListInitiate(SeqList*L){L-size=0;}intListInsert(SeqList*L,inti,DataTypex){intj;if(L-size=MaxSize){printf(已满!\n);return0;}elseif(i0||iL-size){printf(不合法!\n);return0;}else{for(j=L-size;ji;i--)L-list[j]=L-list[j-1];L-list[i]=x;L-size++;return1;}}intListDelete(SeqList*L,inti,DataType*x){intj;if(L-size=0){printf(无数据可删!\n);return0;}elseif(i0||iL-size-1){printf(参数不合法!\n);return0;}else{武汉工商学院*x=L-list[i];for(j=i+1;j=L-size-1;j++)L-list[j-1]=L-list[j];L-size--;return1;}}intListGet(SeqListL,inti,DataType*x){if(i0||iL.size-1){printf(参数不合法!\n);return0;}else{*x=L.list[i];return1;}}intListLength(SeqListL){returnL.size;}#includeSeqList.hvoidmain(){SeqListmyList;inti,x;ListInitiate(&myList);for(i=0;i10;i++){if(ListInsert(&myList,i,i+1)==0){printf(错误!\n);return;}武汉工商学院}if(ListDelete(&myList,4,&x)==0){printf(错误!\n);return;}for(i=0;iListLength(myList);i++){if(ListGet(myList,i,&x)==0){printf(错误!\n);return;}elseprintf(%d,x);}2.#includestdio.h#defineMaxSize100typedefintDataType;武汉工商学院typedefstruct{DataTypelist[MaxSize];intsize;}SeqList;voidListInitiate(SeqList*L){L-size=0;}intListLength(SeqListL){returnL.size;}intListInsert(SeqList*L,inti,DataTypex){intj;if(L-size=MaxSize){printf(顺序表已满无法插入!\n);return0;}else{for(j=0;jL-size;j++){if(L-list[j]x)break;}inti=j;for(j=L-size;ji;j--)L-list[j]=L-list[j-1];L-list[i]=x;L-size++;return1;}}intListDelete(SeqList*L,inti,DataType*x){武汉工商学院intj;if(L-size=0){printf(顺序表已空无数据元素可删!\n);return0;}elseif(i0||iL-size){printf(参数i不合法!\n);return0;}else{*x=L-list[i];for(j=i+1;j=L-size-1;j++)L-list[j-1]=L-list[j];L-size--;return1;}}intListGet(SeqListL,inti,DataType*x){if(i0||iL.size-1){printf(参数i不合法!\n);return0;}else{*x=L.list[i];return1;}}voidmain(void){SeqListmyList;inti,x;ListInitiate(&myList);for(i=0;i10;i++){武汉工商学院if(ListInsert(&myList,i,i+1)==0){printf(错误!\n);return;}}if(ListDelete(&myList,4,&x)==0){printf(错误!\n);return;}for(i=0;iListLength(myList);i++){if(ListGet(myList,i,&x)==0){printf(错误!\n);return;}elseprintf(%d,x);}}3.武汉工商学院#includestdio.h#includestdlib.htypedefintDataType;typedefstructNode{DataTypedata;structNode*next;}SLNode;voidListInitiate(SLNode**head){if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);(*head)-next=NULL;}intListLength(SLNode*head){SLNode*p=head;intsize=0;while(p-next!=NULL){p=p-next;size++;}returnsize;}intListInsert(SLNode*head,inti,DataTypex){SLNode*p,*q;intj;p=head;j=-1;while(p-next!=NULL&&ji-1){p=p-next;j++;}if(j!=i-1){printf(插入位置参数错!);武汉工商学院return0;}if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);q-data=x;q-next=p-next;p-next=q;return1;}intListDelete(SLNode*head,inti,DataType*x){SLNode*p,*s;intj;p=head;j=-1;while(p-next!=NULL&&p-next-next!=NULL&&ji-1){p=p-next;j++;}if(j!=i-1){printf(删除位置参数错!);return0;}s=p-next;*x=s-data;p-next=p-next-next;free(s);return1;}intListGet(SLNode*head,inti,DataType*x){SLNode*p;intj;p=head;j=-1;while(p-next!=NULL&&ji){p=p-next;j++;}if(j!=i)武汉工商学院{printf(取元素位置参数错!);return0;}*x=p-data;return1;}voidDestroy(SLNode**head){SLNode*p,*p1;p=*head;while(p!=NULL){p1=p;p=p-next;free(p1);}*head=NULL;}voidmain(){SLNode*head;inti,x;ListInitiate(&head);for(i=0;i10;i++){if(ListInsert(head,i,i+1)==0){printf(错误!\n);return;}}if(ListDelete(head,4,&x)==0){printf(错误!\n);return;}for(i=0;iListLength(head);i++){if(ListGet(head,i,&x)==0){武汉工商学院printf(错误!\n);return;}elseprintf(%d,x);}Destroy(&head);}4.#includestdio.h#includestdlib.htypedefintDataType;typedefstructNode{DataTypedata;structNode*next;}SLNode;voidListInitiate(SLNode**head){if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);(*head)-next=*head;武汉工商学院}intListLength(SLNode*head){SLNode*p=head;intsize=0;while(p-next!=head){p=p-next;size++;}returnsize;}intListInsert(SLNode*head,inti,DataTypex){SLNode*p,*q;intj;p=head;j=-1;while(p-next!=head&&ji-1){p=p-next;j++;}if(j!=i-1){printf(插入位置参数错!);return0;}if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);q-data=x;q-next=p-next;p-next=q;return1;}intListDelete(SLNode*head,inti,DataType*x){SLNode*p,*s;intj;p=head;j=-1;while(p-next!=head&&p-next-next!=head&&ji-1)武汉工商学院{p=p-next;j++;}if(j!=i-1){printf(删除位置参数错!);return0;}s=p-next;*x=s-data;p-next=p-next-next;free(s);return1;}intListGet(SLNode*head,inti,DataType*x){SLNode*p;intj;p=head;j=-1;while(p-next!=head&&ji){p=p-next;j++;}if(j!=i){printf(取元素位置参数错!);return0;}*x=p-data;return1;}voidDestro