您的当前位置:首页正文

有序顺序表

2022-08-03 来源:汇智旅游网
主函数测试

#include #define MaxSize 100 typedefintDataType; # include\"list.h\"

void main() {

SeqList mylist1,mylist2,mylist3; ListInitiate(&mylist1); ListInitiate(&mylist2); ListInitiate(&mylist3); inti,x,w,t; t=true; while(t) {

printf(\"\\n\\\1.输入表1中元素\\n\"); printf(\"\\\2.删除表1中元素\\n\"); printf(\"\\\3.输入表2中元素\\n\");

printf(\"\\\4.合并表1,表2中元素\\n\"); printf(\"\\\5.退出程序\\n\"); printf(\"\\\请输入选项:\");

scanf(\"%d\ switch(w) {

case 1: {

printf(\"请输入表1的元素:\\n\"); for(i=0;i<10;i++) {

scanf(\"%d\

ListInsert(&mylist1,i,x); }

QuickSort(&mylist1,0,9);

printf(\"当前表1中元素为:\"); for(i=0;iListGet(&mylist1,i,&x); printf(\"%d \ }

printf(\"\\n\");

printf(\"元素个数为:%d\ printf(\"\\n\"); };break; case 2: {

printf(\"请输入要删除的元素位置:\"); scanf(\"%d\

ListDelete(&mylist1,i,&x); printf(\"删除成功!\"); printf(\"\\n\");

printf(\"表1中元素为:\");

for(i=0;iListGet(&mylist1,i,&x); printf(\"%d \

}

printf(\"\\n\"); };break; case 3: {

printf(\"请输入表2的元素:\\n\"); for(i=0;i<10;i++) {

scanf(\"%d\

ListInsert(&mylist2,i,x); }

QuickSort(&mylist2,0,9); printf(\"\\n\");

printf(\"表2中元素为:\");

for(i=0;iListGet(&mylist2,i,&x); printf(\"%d \ }

printf(\"\\n\"); };break; case 4: {

printf(\"表1中元素为:\");

for(i=0;iListGet(&mylist1,i,&x); printf(\"%d \

}

printf(\"\\n\");

printf(\"表2中元素为:\");

for(i=0;iListGet(&mylist2,i,&x); printf(\"%d \ }

printf(\"\\n\");

ListMerge(&mylist1,&mylist2,&mylist3);

QuickSort(&mylist3,0,ListLength(mylist3)-1); printf(\"表3中元素为:\\n\");

for(i=0;iListGet(&mylist3,i,&x); printf(\"%d \ }

printf(\"\\n\");break; }

case 5:t=false;break; } } }

头文件

typedefstruct {

DataTypelist[MaxSize]; int size; }SeqList;

voidListInitiate(SeqList *L)

voidQuickSort(SeqList *L,intlow,int high) {

voidListMerge(SeqList *L1,SeqList *L2,SeqList *L3)

头文件实现

typedefstruct {

DataTypelist[MaxSize]; int size; }SeqList;

voidListInitiate(SeqList *L) {

L->size=0; }

intListLength(SeqList L) {

returnL.size; }

intListInsert(SeqList *L,inti,DataType x) {

int j;

if(L->size>=MaxSize) {

printf(\"顺序表已满无法插入!\\n\"); return 0; }

else if(i<0||i>L->size) {

printf(\"参数i不合法!\\n\"); return 0;

} else

if(L->size==0) {

L->list[0]=x; L->size++; return 1; } else

{

for(j=L->size;j>i;j--) L->list[j]=L->list[j-1]; L->list[i]=x; L->size++; return 1;

} }

intListDelete(SeqList *L,inti,DataType *x) {

int j;

if(L->size<=0) {

printf(\"顺序表已空无数据可删!\\n\"); return 0;

}

else if(i<0||i>L->size-1) {

printf(\"参数i不合法!\\n\"); return 0; } else {

*x=L->list[i];

for(j=i+1;j<=L->size-1;j++) L->list[j-1]=L->list[j]; L->size--; return 1; } }

intListGet(SeqList *L,inti,DataType *x) {

if(i<0||i>L->size-1) {

printf(\"参数i不合法!\\n\"); return 0; } else {

*x=L->list[i]; return 1; } }

voidQuickSort(SeqList *L,intlow,int high) {

inti=low,j=high;

DataType temp=L->list[low]; while(iwhile(ilist[j]) j--; if(iL->list[i]=L->list[j]; i++; }

while(ilist[i]L->list[j]=L->list[i]; j--; } }

L->list[i]=temp;

if(low}

voidListMerge(SeqList *L1,SeqList *L2,SeqList *L3) {

intx,i,j;

for(i=0;isize;i++) {

ListGet(L1,i,&x); ListInsert(L3,i,x);

}

for(j=0;jsize;j++) {

ListGet(L2,j,&x);

ListInsert(L3,L1->size+j,x);

} }

运行结果:

因篇幅问题不能全部显示,请点此查看更多更全内容