您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 畜牧/养殖 > 华南农业大学数据结构答案(实验1)
01顺序线性表的基本操作#includestdio.h#includemalloc.h#defineOK1#defineERROR0#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineElemTypeinttypedefstruct{int*elem;intlength;intlistsize;}SqList;intInitList_Sq(SqList&L){//算法2.3,构造一个空的线性表L,该线性表预定义大小为LIST_INIT_SIZEL.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}intLoad_Sq(SqList&L){//输出顺序表中的所有元素inti;if(L.length==0)printf(TheListisempty!);//请填空else{printf(TheListis:);for(i=0;iL.length;i++)printf(%d,L.elem[i]);//请填空}printf(\n);returnOK;}intListInsert_Sq(SqList&L,inti,inte){//算法2.4,在顺序线性表L中第i个位置之前插入新的元素eif(i1||iL.length+1)returnERROR;ElemType*newbase,*q,*p;if(L.length=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));L.elem=newbase;L.listsize+=LISTINCREMENT;}q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}intListDelete_Sq(SqList&L,inti,int&e){//算法2.5,在顺序线性表L中删除第i个位置的元素,并用e返回其值ElemType*p,*q;if(i1||iL.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;returnOK;}intmain(){SqListT;inta,i;ElemTypee,x;if(InitList_Sq(T))//判断顺序表是否创建成功{printf(ASequenceListHasCreated.\n);}while(1){printf(1:Insertelement\n2:Deleteelement\n3:Loadallelements\n0:Exit\nPleasechoose:\n);scanf(%d,&a);switch(a){case1:scanf(%d%d,&i,&x);if(!ListInsert_Sq(T,i,x))printf(InsertError!\n);//判断i值是否合法,请填空elseprintf(TheElement%disSuccessfullyInserted!\n,x);break;case2:scanf(%d,&i);if(!ListDelete_Sq(T,i,e))printf(DeleteError!\n);//判断i值是否合法,请填空elseprintf(TheElement%disSuccessfullyDeleted!\n,e);break;case3:Load_Sq(T);break;case0:return1;}}}02合并顺序表#includestdio.h#includemalloc.h#defineOK1#defineERROR0#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineElemTypeinttypedefstruct{int*elem;intlength;intlistsize;}SqList;intInitList_Sq(SqList&L){//算法2.3,构造一个空的线性表L,该线性表预定义大小为LIST_INIT_SIZEL.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}intLoad_Sq(SqList&L){inti;for(i=0;iL.length;i++)printf(%d,L.elem[i]);printf(\n);returnOK;}intListLength(SqListL){returnL.length;}intGetElem(SqListL,inti,ElemType&e){e=L.elem[i-1];returnOK;}intListInsert_Sq(SqList&L,inti,inte){if(i1||iL.length+1)returnERROR;ElemType*newbase,*q,*p;if(L.length=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));L.elem=newbase;L.listsize+=LISTINCREMENT;}q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}voidMergeList(SqListLa,SqListLb,SqList&Lc){inti,j,k,La_len,Lb_len;intai,bj;i=j=1;k=0;InitList_Sq(Lc);La_len=ListLength(La);Lb_len=ListLength(Lb);while((i=La_len)&&(j=Lb_len)){GetElem(La,i,ai);GetElem(Lb,j,bj);if(ai=bj){ListInsert_Sq(Lc,++k,ai);++i;}else{ListInsert_Sq(Lc,++k,bj);++j;}}while(i=La_len){GetElem(La,i++,ai);ListInsert_Sq(Lc,++k,ai);}while(j=Lb_len){GetElem(Lb,j++,bj);ListInsert_Sq(Lc,++k,bj);}Load_Sq(Lc);}intmain(){intan,bn,i,e;SqListLa,Lb,Lc;InitList_Sq(La);scanf(%d,&an);for(i=1;i=an;i++){scanf(%d,&e);ListInsert_Sq(La,i,e);}printf(ListA:);Load_Sq(La);InitList_Sq(Lb);scanf(%d,&bn);for(i=1;i=bn;i++){scanf(%d,&e);ListInsert_Sq(Lb,i,e);}printf(ListB:);Load_Sq(Lb);printf(ListC:);MergeList(La,Lb,Lc);}03顺序表逆置#includestdio.h#includemalloc.h#defineOK1#defineERROR0#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineElemTypeinttypedefstruct{ElemType*elem;intlength;intlistsize;}SqList;intInitList_Sq(SqList&L){L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}intListInsert_Sq(SqList&L,inti,inte){if(i1||iL.length+1)returnERROR;ElemType*newbase,*q,*p;if(L.length=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));L.elem=newbase;L.listsize+=LISTINCREMENT;}q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}intListDelete_Sq(SqList&L,inti,int&e){ElemType*p,*q;if(i1||iL.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;returnOK;}intLoad_Sq(SqList&L){inti;for(i=0;iL.length;i++)printf(%d,L.elem[i]);printf(\n);returnOK;}intmain(){SqListT;intn,i,l;ElemTypee,x;InitList_Sq(T);scanf(%d,&n);for(i=1;i=n;i++){scanf(%d,&e);ListInsert_Sq(T,i,e);}printf(TheListis:);Load_Sq(T);l=n/2;for(i=l;i0;i--){ListDelete_Sq(T,n+1-i,x);ListDelete_Sq(T,i,e);ListInsert_Sq(T,i,x);ListInsert_Sq(T,n+1-i,e);}printf(TheturnedListis:);Load_Sq(T);}04链式线性表的基本操作#includestdio.h#includemalloc.h#defineERROR0#defineOK1#defineElemTypeinttypedefstructLNode{intdata;structLNode*next;}LNode,*LinkList;intCreateLink_L(LinkList&L,intn){//创建含有n个元素的单链表LinkListp,q;inti;ElemTypee;L=(LinkList)malloc(sizeof(LNode));L-next=NULL;//先建立一个带头结点的单链表q=(LinkList)malloc(sizeof(LNode));q=L;for(i=0;in;i++){scanf(%d,&e);p=(LinkList)malloc(sizeof(LNode));//生成新结点p-data=e;p-next=q-next;q-next=p;q=q-next;}returnOK;}intLoadLink_L(LinkList&L){//单链表遍历LinkListp=L-next;if(p==NULL)printf(TheListisempty!);//请填空else{pri
本文标题:华南农业大学数据结构答案(实验1)
链接地址:https://www.777doc.com/doc-4191682 .html