#include<stdio.h>
#define MaxSize 10
typedef int ElemType;
//定义一个顺序表
typedef struct
{
/* data */
ElemType data[MaxSize];
int length;
}SqList;
//初始化顺序表
void InitList(SqList *L)
{
L->length = 0;
}
//创建顺序表,为其中添加元素
void CreateList(SqList *L,int n)
{
for(int i=0;i<n;i++)
scanf("%d",&L->data[i]);
L->length = n;
}
//输出顺序表
void DispList(SqList *L)
{
for(int i=0;i<L->length;i++)
printf("a[%d]=%d\n",i,L->data[i]);
}
//在位序i处插入元素e-------------在下标为i-1的位置插入e
int ListInsert(SqList *L,int i,int e)
{
if (i<1 || i > L->length+1) //插入位置非法
return -1;
if (L->length >= MaxSize) //顺序表已满
return -1;
for(int j=L->length;j>=i;j--)
L->data[j] = L->data[j-1]; //将i以及之后的元素全部后移一位
L->data[i-1] = e;
L->length++;
return 1; //插入成功
}
//删除位序为i的元素----------删除下标为i-e的元素
int DeleteItem(SqList *L,int i, int *e)
{
if (i<1 || i>L->length) //删除位置非法
return -1;
if (L->length==0) //顺序表为空表
return -1;
*e = L->data[i-1];
for(int j=i;j<L->length;j++)
L->data[j-1] = L->data[j];
L->length--;
return 1;
}
//修改位序为i的元素----------修改下标为i-1的元素值
int ChangeItem(SqList *L,int i,int e)
{
L->data[i-1] = e;
return 1;
}
//按位序查找--------查找下标为i-1的元素
int SearchByLocate(SqList *L,int i,int *e)
{
if (i<1 || i>L->length) //位置非法
return -1;
if (L->length==0) //顺序表为空
return -1;
*e = L->data[i-1];
return 1;
}
//按值查找---------查找元素值为e的元素下标
int SearchByValue(SqList *L,int e)
{
if(L->length==0) //顺序表为空表
return -1;
for (int i = 0; i < L->length; i++)
{
if (L->data[i]==e)
return i+1;
}
return -1;
}
int main()
{
SqList L;
InitList(&L);
int a = 0;
printf("你想用几个值创建顺序表");
scanf("%d",&a);
CreateList(&L,a);
printf("初始顺序表为:\n");
DispList(&L);
printf("\n");
ListInsert(&L,3,13);
printf("插入元素之后的顺序表为:\n");
DispList(&L);
printf("\n");
int e =-1;
int flag=0;
flag = DeleteItem(&L,3,&e);
if (flag==1)
{
printf("删除成功!\n");
}else{
printf("删除失败!\n");
}
printf("删除元素之后的顺序表为:\n");
DispList(&L);
printf("\n");
printf("修改元素之后的顺序表为:\n");
ChangeItem(&L,3,666);
DispList(&L);
printf("\n");
int flag2 = 0;
int e2 = -1;
flag2 = SearchByLocate(&L,3,&e2);
if (flag2==1){
printf("查找成功,该位置元素值为:%d",e2);
}else{
printf("查找失败");
}
printf("\n");
int num = -1; //用于接收按值查找元素位序
num = SearchByValue(&L,666);
if (num==-1)
{
printf("顺序表中没有此元素!");
}else{
printf("该元素在顺序表中是第%d个元素",num);
}
}
运行结果如下图: