1. 程式人生 > >第四次簽到,復習下以前的順序表

第四次簽到,復習下以前的順序表

n) com 初始 stdio.h void pri lib sea 位置

#include #include #define InitSize 60 typedef int Data; typedef struct { Data *data; Data n,maxsize; } List; void dmenu() { printf("----------------------\n"); printf("0.退出 \n"); printf("1.對表L操作 \n"); printf("2.對表Q操作 \n"); printf("3.二路合並 \n"); printf("4.輸出表C的表長 \n"); printf("5.遍歷表C \n"); printf("6.初始化表C\n"); printf("7.排序表L\n"); printf("8.排序表Q\n"); printf("----------------------\n"); } void menu() { printf("----------------------\n"); printf("0.返回上一級 \n"); printf("1.初始化\n"); printf("2.清空\n"); printf("3.表長\n"); printf("4.值查找 返回邏輯值 \n"); printf("5.插入 \n"); printf("6.刪除 \n"); printf("7.遍歷 \n"); printf("----------------------\n"); } void InitList(List &L)//初始化 { L.data=new Data[InitSize]; L.maxsize=InitSize; L.n=0; printf("表初始化完成\n"); } void clearList(List &L) //清空 { L.n=0; printf("表已清空\n"); } int Length(List &L) //表長 { return L.n; } int isEmpty(List &L) //判斷表空 { return (L.n==0)?1:0; } int isFull(List &L) //判斷表滿 { return (L.n==L.maxsize)?1:0; } int search(List &L,Data x)//值查找 返回邏輯值 { for(int i=1;i<=L.n;i++) if(L.data[i-1]==x) return i; return 0; } int Insert(List &L,Data x,int i) //插入 { if(isFull(L)) { printf("表滿\n"); return 0; } if(i<1||i>L.n+1) return 0; if(i<1||i>L.n+1) return 0; for(int j=L.n;j>=i;j--) L.data[j]=L.data[j-1]; L.data[i-1]=x; L.n++; return 1; } int Delsert(List &L,int i)//刪除 { if(isEmpty(L)) { printf("表空\n"); return 0; } if(i<1||i>L.n+1) return 0; if(i<1||i>L.n+1) return 0; for(int j=i;jQ.data[j]) C.data[k++]=Q.data[j++]; else { C.data[k++]=Q.data[j++];i++; } } while(iL.data[j]) k=j; } if(k!=i) { t=L.data[k]; L.data[k]=L.data[i]; L.data[i]=t; } } } main() { List L,Q,C; int option,wz,zhi,xbiao; tiaozhuan: dmenu(); printf("請輸入命令序號:\n"); scanf("%d",&xbiao); while(1) { switch(xbiao) { case 1:{ printf("對表L操作\n"); menu(); printf("請輸入命令序號:\n"); scanf("%d",&option); while(option>=0&&option<=7) { switch(option) { case 1:InitList(L);break; case 2:clearList(L);break; case 3:{ printf("表長為:%d\n",Length(L)); }break; case 4:{ printf("輸入要查找的數:\n"); scanf("%d",&zhi); if(search(L,zhi)) printf("邏輯位置在:%d\n",search(L,zhi)); else printf("沒找到\n"); } break; case 5:{ printf("輸入要插入的數:\n"); scanf("%d",&zhi); printf("輸入要插入的位置:\n"); scanf("%d",&wz); if(Insert(L,zhi,wz)) printf("插入成功!\n"); else printf("插入失敗!\n"); } break; case 6:{ printf("輸入要刪除的位置:\n"); scanf("%d",&wz); if(Delsert(L,wz)) printf("刪除成功!\n"); else printf("刪除失敗!\n"); } break; case 7: printList(L);break; case 0: goto tiaozhuan; break; default :{ printf("請重新輸入數據:\n"); scanf("%d",&option); continue; } } menu(); printf("請輸入命令序號:"); scanf("%d",&option); } }break; case 2:{ printf("對表Q操作\n"); menu(); printf("請輸入命令序號:\n"); scanf("%d",&option); while(1) { switch(option) { case 1:InitList(Q);break; case 2:clearList(Q);break; case 3:{ printf("表長為:%d\n",Length(Q)); }break; case 4:{ printf("輸入要查找的數:\n"); scanf("%d",&zhi); if(search(Q,zhi)) printf("邏輯位置在:%d\n",search(Q,zhi)); else printf("沒找到\n"); } break; case 5:{ printf("輸入要插入的數:\n"); scanf("%d",&zhi); printf("輸入要插入的位置:\n"); scanf("%d",&wz); if(Insert(Q,zhi,wz)) printf("插入成功!\n"); else printf("插入失敗!\n"); } break; case 6:{ printf("輸入要刪除的位置:\n"); scanf("%d",&wz); if(Delsert(Q,wz)) printf("刪除成功!\n"); else printf("刪除失敗!\n"); } break; case 7: printList(Q);break; case 0:goto tiaozhuan;break; default :{ printf("請重新輸入數據:\n"); scanf("%d",&option); continue; } } menu(); printf("請輸入命令序號:\n"); scanf("%d",&option); } }break; case 3: { commelem(L,Q,C); printList(C); }break; case 4: { printf("表長為:%d\n",Length(C)); }break; case 5: printList(C);break; case 6: InitList(C);break; case 7: { px(L); printList(L); } break; case 8: { px(Q); printList(Q); } break; case 0: return 0;break; default : { printf("請重新輸入數據:\n"); scanf("%d",&xbiao); continue; } } dmenu(); printf("請輸入命令序號:\n"); scanf("%d",&xbiao); } }

第四次簽到,復習下以前的順序表