#include "stdio.h"
#define MaxSize 20
#define OverFlow -1
#define OK 1
#define Error -1
void Init_SeqList(int *Length_pointer)//构造一个空的线性表
{
*Length_pointer=0;//指定线性表的实际元素的个数为0;
}
int Insert_Last(int Element[],int* Length_pointer,int x)//插入一个元素(尾插)
{
if (*Length_pointer==MaxSize-1)
{
printf("表满");
return OverFlow;
}
else
{
Element[*Length_pointer]=x;
(*Length_pointer)++;
return OK;
}
}
int Location_SeqList(int Element[] ,int Length,int x)//查找指定元素
{
int i=0;
while(i<Length&&Element[i]!=x)
{
i++;
}
if(i==Length)
{
return -1;
}
else return i+1;
}
int Delete_SeqList(int Element[],int *Length_pointer,int i)//删除
{
int j;
if(i<1||i>*Length_pointer)
{
printf("不存在第i个元素");
return Error;
}
for(j=i-1;j<=*Length_pointer-1;j++)
{
Element[j]=Element[j+1];
(*Length_pointer)--;
return OK;
}
}
void Show_SeqList(int Element[],int Length)//遍历线性表
{
int j;
printf("/n");
if(Length==0)
{
printf("空表!/n");
}
else
{
for(j=0;j<Length;j++)
printf("%d",Element[j]);
}
}
void SetNull_SeqList(int *Length_pointer)//清空线性表
{
*Length_pointer=0;
}
void main()
{
int x,i,loca;
int Element[MaxSize];
int Length;
Init_SeqList(&Length);//构造一个空的线性表
do
{
printf("/n");
printf("1--插入一个元素(Insert)/n");
printf("2--查询一个元素(Locate)/n");
printf("3--删除一个元素(Delete)/n");
printf("4--显示所以元素(Show)/n");
printf("5--退出/n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("请输入要插入的分数/n");
scanf("%d",&x);
if (Insert_Last(Element,&Length,x)!=OK)
printf("插入失败/n");
break;
case 2:
printf("请输入要查询的分数/n");
scanf("%d",&x);
loca=Location_SeqList(Element,Length,x);
if(loca!=-1)
{
printf("查找成功!存储位置为:%d",loca);
}
else
{
printf("查找失败!");
}
break;
case 3:
printf("请输入要删除的分数/n");
scanf("%d",&x);
loca=Location_SeqList(Element,Length,x);//删除时先查找位置
if(loca!=-1)
{
if(Delete_SeqList(Element,&Length,loca)!=OK)
printf("删除失败/n");
}
break;
case 4:
Show_SeqList(Element,Length);
break;
case 5:
break;
default:
printf("错误选择!请重选");
break;
}
}while(i!=5);
SetNull_SeqList(&Length);
}