//初始化
void InitList(SqList *L)
//创建表
int CreateList(SqList *L,int i)
//求表长
int Length(SqList L)
//按值查找
int LocateElem(SqList L,ElemType e)
//按位查找
int GetElem(SqList L,int i)
//插入
int ListInsert(SqList *L,int i,ElemType e)
//删除
int ListDelete(SqList *L,int i,ElemType *e)
//输出
void PrintList(SqList L)
//判空
int Empty(SqList L)
//置空
int ClearList(SqList *L)
#include<stdio.h>
#define MAX 50
typedef int ElemType;
typedef struct
{
ElemType data[MAX];
int length;
}SqList;
//初始化
void InitList(SqList *L)
{
L->length=0;
}
//创建表
int CreateList(SqList *L,int i)
{
int ret;
if(i>MAX)
{
printf("Create Error!\n");
ret=0;
}
else{
int n=0;
for(int a=0;a<i;a++)
{
printf("请输入元素:");
scanf("%d",&n);
L->data[a]=n;
printf("添加元素:%d 成功\n",n);
L->length++;
}
printf("Create Success.\n");
ret=1;
}
return ret;
}
//求表长
int Length(SqList L)
{
return L.length;
}
//按值查找
int LocateElem(SqList L,ElemType e)
{
int ret=0;
for(int i=0;i<L.length;i++)
{
if(L.data[i]==e){
printf("%d在第%d位\n",e,i+1);
ret++;
}
}
return ret;
}
//按位查找
int GetElem(SqList L,int i)
{
if(i<=L.length)
return L.data[i-1];
else
return 0;
}
//插入
int ListInsert(SqList *L,int i,ElemType e)
{
if(i<1||i>L->length+1)
return 0;
if(L->length>=MAX)
return 0;
for(int j=L->length;j>=i-1;j--)
L->data[j]=L->data[j-1];
L->data[i-1]=e;
L->length++;
return 1;
}
//删除
int ListDelete(SqList *L,int i,ElemType *e)
{
if(i<1||i>L->length)
return 0;
if(L->length==0)
return 0;
*e=L->data[i-1];
for(int j=i;j<L->length;j++)
L->data[j-1]=L->data[j];
L->length--;
return 1;
}
//输出
void PrintList(SqList L)
{
if(L.length!=0)
for(int j=0;j<L.length;j++)
printf("%d\n",L.data[j]);
else
printf("error!\n");
}
//判空
int Empty(SqList L)
{
if(L.length==0)
return 1;
else
return 0;
}
//置空
int ClearList(SqList *L)
{
L->length=0;
return 0;
}
int main()
{
SqList L;
ElemType e;
int x=0,m=0;
int i,j=0,k;
InitList(&L);
printf("初始化顺序表\n");
printf("创建顺序表\n");
printf("请输入需要输入的值的个数:");
scanf("%d",&j);
k=CreateList(&L,j);
if(k!=0)
{
printf("请输入需要插入的值的个数:");
scanf("%d",&j);
if(j>0)
for(i=0;i<j;i++)
{
printf("请输入需要插入的值及其位置:");
scanf("%d %d",&e,&x);
k=ListInsert(&L,x,e);
if(k==0)
printf("Insert Error!\n");
else
printf("Insert %d:%d Success.\n",x,e);
}
printf("请输入需要删除的值的个数:");
scanf("%d",&j);
if(j>0)
for(i=0;i<j;i++)
{
printf("请输入需要删除的值的位置:");
scanf("%d",&x);
k=ListDelete(&L,x,&m);
if(k==0)
printf("Delete Error!\n");
else
printf("Delete %d:%d Success.\n",x,m);
}
m=Length(L);
printf("表的长度为%d\n",m);
printf("输入需要查找的值:");
scanf("%d",&e);
i=LocateElem(L,e);
if(i!=0)
printf("Find Success.\n");
else
printf("Find Error!\n");
printf("输入需要查找的位:");
scanf("%d",&e);
i=GetElem(L,e);
if(i!=0)
printf("第%d位的值为%d\n",e,i);
else
printf("Find Error!\n");
printf("输出顺序表中的内容\n");
PrintList(L);
k=Empty(L);
if(k!=0)
printf("该表为空\n");
else
printf("表不为空\n");
printf("置空顺序表\n");
ClearList(&L);
printf("输出顺序表中的内容\n");
PrintList(L);
k=Empty(L);
if(k!=0)
printf("该表为空\n");
else
printf("表不为空\n");
}
return 0;
}