#include<stdio.h>
#include<stdbool.h>
#define MaxSize 20
typedef int DataType;
typedef struct
{
DataType data[MaxSize];
int length;
}SqList;
void Init_List(SqList * L, int DataType[], int n); // 顺序表初始化
bool Insert_List(SqList * L, int pos, int x); // 顺序表插入
bool Delete_List(SqList * L, int pos, int * x); // 顺序表删除
bool Empty_List(SqList * L); // 判空
bool Full_List(SqList * L); // 判满
int Locate_List(SqList * L, int x); // 按值查找
bool Get_List(SqList * L, int pos, int * x); // 按位查找
int Length_List(SqList *L); // 顺序表长度
void Traverse_List(SqList * L); // 遍历线性表
int main()
SqList L;
int x,val;
int a[8] = {12,32,43,55,34,76,81,59}; // 定义数组
Init_List(&L, a, 8);
printf("\n遍历顺序表:");
Traverse_List(&L);
printf("\n线性表长度:%d\n",Length_List(&L));
if(Insert_List(&L, 1, 80))
printf("\n插入成功!\n");
printf("插入的元素:80\n") ;
printf("位置:第1个位置\n");
}
else
printf("\n插入失败!\n");
printf("遍历顺序表:");
Delete_List(&L, 2, &val);
printf("\n删除的元素:%d\n",val);
printf("位置:第2个位置\n");
if(Locate_List(&L, 55))
printf("\n按值查找成功!\n");
printf("查找的元素是:55\n");
printf("位置:第%d个位置\n",Locate_List(&L, 55));
printf("\n按值查找失败\n");
if(Get_List(&L, 2, &x))
printf("\n按位查找成功\n");
printf("\n按位查找失败!\n");
printf("您查找的元素为:%d\n",x);
return 0;
void Init_List(SqList * L, int DataType[], int n)
int i;
if(n>MaxSize)
printf("存储空间不足!\n");
for(i=0; i<n; ++i){
L->data[i] = DataType[i];
L->length = n;
return;
bool Insert_List(SqList * L, int pos, int x)
if(Full_List(L))
return false;
if(pos<1||pos>L->length+1)
for(i=L->length; i>=pos; i--)
L->data[i] = L->data[i-1];
L->data[pos-1] = x;
L->length++;
return true;
bool Delete_List(SqList * L, int pos, int * val)
if(Empty_List(L))
*val = L->data[pos-1];
for(i=pos; i<L->length; ++i)
L->data[i-1] = L->data[i];
L->length--;
bool Empty_List(SqList * L)
if(L->length==0)
bool Full_List(SqList * L)
if(L->length==MaxSize)
int Locate_List(SqList * L, int x)
for(i=0; i<L->length; ++i)
if(x==L->data[i])
return i+1;
bool Get_List(SqList * L, int pos, int * x)
if(pos<1||pos>L->length)
*x = L->data[pos-1];
int Length_List(SqList *L)
return L->length;
void Traverse_List(SqList * L)
for(i = 0; i<L->length; ++i)
printf("%3d", L->data[i]);
printf("\n");