资源描述:
《线性表的基本操作.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二线性表的基本操作一、实验目的1.掌握用C++/C语言调试程序的基本方法。2.掌握线性表的顺序存储和链式存储的基本运算,如插入、删除等。二、实验要求1.C++/C完成算法设计和程序设计并上机调试通过。2.撰写实验报告,提供实验结果和数据。3. 分析算法,要求给出具体的算法分析结果,包括时间复杂度和空间复杂度,并简要给出算法设计小结和心得。三、实验容:1.分析并运行以下各子程序的主要功能。 程序1:顺序存储的线性表和运算#include#defineMAXSIZE100intlist[MAXSIZE];intn;/*insertinaseqlist
2、*/intsq_insert(intlist[],int*p_n,inti,intx){intj;if(i<0
3、
4、i>*p_n)return(1);if(*p_n==MAXSIZE)return(2);for(j=*p_n+1;j>i;j--)list[j]=list[j-1];list[i]=x;(*p_n)++;return(0);}/*deleteinaseqlist*/intsq_delete(intlist[],int*p_n,inti){intj;if(i<0
5、
6、i>=*p_n)return(1);for(j=i+1;j<=*p_n;j++)list[j-
7、1]=list[j];(*p_n)--;return(0);} voidmain(){inti,x,temp;printf("pleaseinputthenumberforn");printf("n=");scanf("%d",&n);for(i=0;i<=n;i++){printf("list[%d]=",i);scanf("%d",&list[i]);} printf("Thelistbeforeinsertionis");for(i=0;i<=n;i++)printf("%d",list[i]);printf("");printf("pleasein
8、putthepositionwhereyouwanttoinsertavalueposition=");scanf("%d",&i);printf("pleaseinputthevalueyouwanttoinsert.x=");scanf("%d",&x);temp=sq_insert(list,&n,i,x);switch(temp){case0:printf("Theinsertionissuccessful!");printf("Thelistisafterinsertionis");for(i=0;i<=n;i++)printf("%d",l
9、ist[i]);printf("");printf("%d",n);break;case1:case2:printf("Theinsertionisnotsuccessful!");break;}/*deleting*/printf("Thelistbeforedeletingis");for(i=0;i<=n;i++)printf("%d",list[i]);printf("");printf("pleaseinputthepositionwhereyouwanttodeleteavalueposition=");scanf("%d",&i)
10、;temp=sq_delete(list,&n,i);switch(temp){case0:printf("Thedeletingissuccessful!");printf("Thelistisafterdeletingis");for(i=0;i<=n;i++)printf("%d",list[i]);printf("");printf("%d",n);break;case1:printf("Thedeletingisnotsuccessful!");break;}}2.分析并运行以下各子程序的主要功能。程序2链式存储的线性表和运算#include
11、tdio.h>#includestructnode{chardata;structnode*next;};typedefstructnodeNODE;/*Thisfunctioncreatesalink_listwithNnodes.*/NODE*create_link_list(intn){inti;NODE*head,*p,*q;if(n==0)returnNULL;head=(NODE*)malloc(sizeof(NODE));p=head;printf("Pleaseinput%dcharsforthelinklist