#include<iostream.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
#include<stdio.h>
#include "myhead.h"
#include "LinkList.h"


int menu()
{
Status choice;
system("cls");
printf("\t\t\t********************************************\n");
printf("\t\t\t*0.退出                                    *\n");
printf("\t\t\t*1.初始化线性表                            *\n");
printf("\t\t\t*2.销毁表                                  *\n");
printf("\t\t\t*3.重置为空                                *\n");
printf("\t\t\t*4.判断是否为空                            *\n");
printf("\t\t\t*5.显示表长                                *\n");
printf("\t\t\t*6.求数据                                  *\n");
printf("\t\t\t*7.求位置                                  *\n");
printf("\t\t\t*8.求前驱                                  *\n");
printf("\t\t\t*9.求后继                                  *\n");
printf("\t\t\t*10.插入                                   *\n");
printf("\t\t\t*11.删除                                   *\n");
printf("\t\t\t*12.输出线性表                             *\n");
printf("\t\t\t*13.从大到小排序                           *\n");
printf("\t\t\t*14.删除偶数                               *\n");
printf("\t\t\t*15.交换                                   *\n");
printf("\t\t\t********************************************\n");
printf("请输入所选功能的序号:");
scanf("%d",&choice);
return choice;

}
void main()
{
Status choice,i,result;
ElemType e,a,b,c;
LinkList0127 L;
ElemType pre_e,next_e;
do
{
choice = menu();
if (choice < 1 || choice > 15)
continue;
switch (choice)
{
case 0:choice=0;
break;
case 1:if(InitList_L0127(L)==OK)
   {
   printf("成功完成线性表初始化操作!\n");
   }
else
printf("操作失败,内存溢出!\n");
break;
case 2:if (DestroyList_L0127(L)==OK)
   printf("成功完成线性表的销毁\n");
else
printf("销毁失败\n");
break;
case 3:if (ClearList_L0127(L)==OK)
   printf("线性表重置为空\n");
else
printf("重置失败\n");
break;
case 4:if (ListEmpty_L0127(L)==OK)
   printf("线性表为空\n");
else
printf("线性表不为空\n");
break;
case 5:printf("线性表长度:%d",ListLength_L0127(L));
break;

case 6:printf("输入位置:");
scanf("%d",&i);
if (GetElem_L0127(L,i)==ERROR)
printf("此位置没有数据\n");
else
printf("此位置的数据:%d\n",GetElem_L0127(L,i));
break;
case 7:printf("输入数据:");
scanf("%d",&e);
if (LocateElem_L0127(L,e)!=0)
printf("第%d个数据\n",LocateElem_L0127(L,e));
else
printf("没有找到\n");
break;
case 8:printf("输入数据:");
scanf("%d",&e);
if (PriorElem_L0127(L,e,pre_e)==ERROR)
printf("无前驱\n");
else
printf("前驱:%d",PriorElem_L0127(L,e,pre_e));
break;
case 9:printf("输入数据:");
scanf("%d",&e);
if (NextElem_L0127(L,e,next_e)==ERROR)
printf("无后继\n");
else
printf("后继:%d",NextElem_L0127(L,e,next_e));
break;
case 10:printf("输入位置及数据:");
scanf("%d%d",&i,&e);
result=ListInsert_L0127(L,i,e);
if (result==ERROR)
printf("输入位置有误\n");
else
if (result==OVERFLOW)
printf("操作失败,内存溢出!\n");
else
printf("插入成功\n");
break;
case 11:printf("输入位置:");
scanf("%d",&i);
if (ListDelete_L0127(L,i,e)==ERROR)
printf("输入位置有误\n");
else
printf("删除的数据:%d",e);
break;
case 12:if (ListTraverse_L0127(L,DisplayData0127)==ERROR)
printf("操作失败\n");
break;
case 13:if(Sort_L0127(L)==OK)
printf("从大到小排序完成");
break;
case 14:if (Del_L0127(L)==OK)
printf("删除成功");
break;
case 15:printf("输入要交换两个数据位置bc,b<c:");
scanf("%d,%d",&b,&c);
result=Exchange_L0127(L,b,c);
if( result==ERROR)
{
printf("操作失败\n");
break;
}
else
{
if( result==OK)
printf("操作成功\n");
break;
}

}
getchar();
getchar();

}
while (choice!=0);
}