#include <stdio.h>
#define Maxsize 50
#define Status int
#define Elemtype int
#define TRUE 1
#define FALSE 0
//SqList表示的是结构体的名字,SqLists是由typedef给自定义的
//数据类型新取的名字,现在Sqlists用法同int
typedef struct SqList
{
Elemtype data[Maxsize];
int length;
}SqLists;
Status InitList(SqLists *L);
Status ListInsert(SqLists &L,int i,Elemtype e);
void PrintList(SqLists L);
Status DeleteList(SqLists &L,int i,Elemtype &e);
Status LocateElem(SqLists &L,Elemtype e);
int main()
{
SqLists L;
Elemtype e=9;
InitList(&L);
ListInsert(L,1,9);
ListInsert(L,1,8);
ListInsert(L,1,7);
ListInsert(L,1,6);
//DeleteList(L,1,e);
LocateElem(L,e);
PrintList(L);
}
//顺序表初始化
Status InitList(SqLists *L)
{
printf("初始化中。。。。\n");
L->length=0;
printf("初始化完成\n");
return TRUE;
}
//顺序表的插入
Status ListInsert(SqLists &L,int i,Elemtype e)
{
//判断i的范围是否有效,i从1开始
if (i<1||i>L.length+1)
{
printf("insert fault!");
return FALSE;
}
//存储空间已满,无法插入
if (L.length>=Maxsize)
{
printf("insert fault!");
return FALSE;
}
//注意位序i是从1开始,数组下标是从0开始的
//将第i个元素及后面的元素统一向后移动一位
for (int j = L.length; j >= i; j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
printf("insert success\n");
return TRUE;
}
//顺序表的输出
void PrintList(SqLists L)
{
for (int i = 0; i < L.length; i++)
{
printf("%d\n",L.data[i]);
}
}
//顺序表的删除
Status DeleteList(SqLists &L,int i,Elemtype &e)
{
if (i<1||i>L.length)
{
return FALSE;
}
//e来存储已删除的元素
e=L.data[i-1];
//从第i个元素开始后面的元素覆盖前面一个元素
for (int j = i; j < L.length; j++)
{
L.data[j-1]=L.data[j];
}
L.length--;
return TRUE;
}
//顺序表按值查找
Status LocateElem(SqLists &L,Elemtype e)
{
for (int i = 0; i < L.length; i++)
{
if (L.data[i]==e)
{
printf("你所找的元素是第%d个元素\n",i+1);
}
}
return TRUE;
}
顺序表的各种操作,以函数的形式将各种功能展示出来了,读者可以根据函数功能在main函数里进行测试。