1、华南农业大学数据结构上机实验课答案数据结构上机答案1.1顺序线性表的基本操作#include#include#define OK 1#define ERROR 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ElemType inttypedef struct int *elem,length,listsize;SqList;int InitList_Sq(SqList &L) L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); L.length=0; L.li
2、stsize=LIST_INIT_SIZE; return OK;int Load_Sq(SqList &L) int i; if(L.length=0) printf(The List is empty!); else printf(The List is:); for(i=0;iL.length;i+) printf(% d,L.elemi); printf(n); return OK;int ListInsert_Sq(SqList &L,int i,int e) if(iL.length+1) return ERROR; ElemType *newbase,*q,*p; if(L.le
3、ngth=L.listsize) newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType); L.elem=newbase; L.listsize+=LISTINCREMENT; q=&(L.elemi-1); for(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p; *q=e; +L.length; return OK;int ListDelete_Sq(SqList &L,int i,int &e) ElemType *q,*p; if(iL.length) r
4、eturn ERROR; p=&(L.elemi-1); e=*p; q=L.elem+L.length-1; for(+p;p=q;p+) *(p-1)=*p; L.length-; return OK;int main() SqList T; int a,i; ElemType e,x; if(InitList_Sq(T) printf(A Sequence List Has Created.n); while(1) printf(1:Insert elementn2:Delete elementn3:Load all elementsn0:ExitnPlease choose:n); s
5、canf(%d,&a); switch(a) case 1: scanf(%d%d,&i,&x); if(!ListInsert_Sq(T,i,x) printf(Insert Error!n); else printf(The Element %d is Successfully Inserted!n,x); break; case 2: scanf(%d,&i); if(!ListDelete_Sq(T,i,e) printf(Delete Error!n); else printf(The Element %d is Successfully Deleted!n,e); break; c
6、ase 3: Load_Sq(T); break; case 0: return 1; 1.2合并顺序表 #include#include#define OK 1#define ERROR 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ElemType inttypedef struct int *elem,length,listsize;SqList;int InitList_Sq(SqList &L) L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); L
7、.length=0; L.listsize=LIST_INIT_SIZE; return OK;int Load_Sq(SqList &L) int i; for(i=0;iL.length;i+) printf(%d ,L.elemi); printf(n); return OK;int ListLength(SqList L) return L.length;int GetElem(SqList L,int i,ElemType &e) e=L.elemi-1; return OK;int ListInsert_Sq(SqList &L,int i,int e) if(iL.length+
8、1) return ERROR; ElemType *p,*q,*newbase; if(L.listsize=q;p-) *(p+1)=*p; *q=e; L.length+; return OK;void MergeList(SqList La,SqList Lb,SqList &Lc) int i,j,k,La_len,Lb_len,ai,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); Ge
9、tElem(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);int main() int an,bn,i,e; SqList La,Lb,Lc; InitList_Sq(La); scanf(%d,&an); for(
10、i=1;i=an;i+) scanf(%d,&e); ListInsert_Sq(La,i,e); printf(List A:); Load_Sq(La); InitList_Sq(Lb); scanf(%d,&bn); for(i=1;i=an;i+) scanf(%d,&e); ListInsert_Sq(Lb,i,e); printf(List B:); Load_Sq(Lb); printf(List C:); MergeList(La,Lb,Lc); return 0;1.3顺序表逆置 #include#include#define OK 1#define ERROR 0#defi
11、ne LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ElemType int typedef struct int *elem,length,listsize;SqList;int InitList_Sq(SqList &L) L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L.elem) printf(NO1); return ERROR; L.length=0; L.listsize=LIST_INIT_SIZE; return OK;int Load_Sq(S
12、qList &L) int i; if(!L.length) printf(This List is empty!n); return ERROR; else for(i=0;i=L.listsize) newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType); if(!newbase) printf(NO2); return ERROR; L.elem=newbase; L.listsize+=LISTINCREMENT; q=&(L.elemi-1); for(p=&(L.elemL.length-1);p=q;p-) *(p+1)=*p; *q=e; L.length+; return OK;int swap(SqList &L,int n) int i,j,temp; for(i=0,j=n-1;ji;i+,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1