链表吗?以前练习的时候做过一个,你参考下#include#include#include#define OK 1;#define ERROR 0;typedef int ElemType;typedef int Status;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void CreateList(LinkList &L,int n) //创建表{ int i; LNode *p; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=n;i>0;i--) { p=(LinkList)malloc(sizeof(LNode)); printf("输入第%d个元素的值\n",i); scanf("%d",&p->data); p->next=L->next; L->next=p; } printf("创建成功!\n");}Status GetElem(LinkList &L,int i) //得到第i个元素{ ElemType j=1,e; LNode *p; p=L->next; while(jnext; j++; } if(!p||j>i) { printf("第%d个元素不存在!\n",i); return ERROR; } e=p->data; printf("第%d个元素是%d\n",i,e); return OK;}Status ListInsert(LinkList &L,int i,ElemType e) //插入元素{ ElemType j; LNode *p,*s; p=L; j=1; while(p&&jnext; ++j; } if(!p||j>i) { printf("不能在第%d中插入\n",i); } s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK;}Status ListDelete(LinkList &L,int i) //删除元素{ LNode *p,*q; p=L; int j=0; while(p->next&&jnext; j++; } if(!(p->next)||j>i-1) { printf("查找失败!\n"); return ERROR; } q=p->next; p->next=q->next; free(q); printf("删除成功!\n"); return OK;}void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc) //归并{ LNode *pa,*pb,*pc; Lc=pc=La; pa=La->next; pb=Lb->next; while(pa&&pb) { if(pa->data<=pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb; printf("归并成功!\n");}void PList(LinkList &L) //打印{ LNode *p; p=L->next; while(p) { printf("%d ",p->data); p=p->next; } printf("\n");}Status CList(LinkList &L) //排序{ LNode *p; int flag,e; p=L; while(1) { flag=0; for(p=L;p->next->next!=NULL;p=p->next) { if(p->next->data>p->next->next->data) { e=p->next->data; p->next->data=p->next->next->data; p->next->next->data=e; flag=1; } } if(flag==0) { printf("排序成功!\n"); return OK; } }} int main(){ int count=1,m,n,k,sum,i,j,g; LinkList list[10]; printf("输入创建表的个数\n"); scanf("%d",&m); for(;count<=m;count++) { printf("输入第%d个表的元素个数\n",count); scanf("%d",&n); printf("逆序输入n个元素\n"); CreateList(list[count],n); printf("第%d个表创建成功\n",count); } sum=m+1; while(1) { printf("功能:\n1.查找某位置元素的值\n2.插入元素\n3.删除元素\n4.元素排序\n5.两表合并\n6.显示表内元素\n7.退出\n"); scanf("%d",&k); switch(k) { case 1: printf("输入查找的表\n"); scanf("%d",&i); if(i>m) { printf("不存在表%d\n",i); break; } printf("输入查找位置\n"); scanf("%d",&j); GetElem(list[i],j); break; case 2: printf("输入要插入的表\n"); scanf("%d",&i); if(i>m) { printf("不存在表%d\n",i); break; } printf("输入要插入的位置\n"); scanf("%d",&j); printf("输入要插入的值\n"); scanf("%d",&g); ListInsert(list[i],j,g); break; case 3: printf("输入要删除的表\n"); scanf("%d",&i); if(i>m) { printf("不存在表%d\n",i); break; } printf("输入要删除的位置\n"); scanf("%d",&j); ListDelete(list[i],j); break; case 4: printf("输入要排序的表\n"); scanf("%d",&i); if(i>m) { printf("不存在表%d\n",i); break; } CList(list[i]); break; case 5: printf("输入表1\n"); scanf("%d",&i); if(i>m) { printf("不存在表%d\n",i); break; } printf("输入表2\n"); scanf("%d",&j); if(i>m) { printf("不存在表%d\n",j); break; } MergeList(list[i],list[j],list[sum]); printf("已经将合并的标放入第%d个表中",sum); sum++; m++; break; case 6: printf("输入要显示的表\n"); scanf("%d",&i); if(i>m) { printf("不存在表%d\n",i); break; } PList(list[i]); break; case 7: return 0; default: printf("错误的指令!/n"); break; } }}