天天看点

顺序表——顺序存储结构

#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");

顺序表——顺序存储结构