第四次簽到,復習下以前的順序表
阿新 • • 發佈:2019-05-10
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);
}
}
第四次簽到,復習下以前的順序表