当前位置:文档之家› 顺序存储结构的表示

顺序存储结构的表示

顺序存储结构的表示
顺序存储结构的表示

顺序存储结构的表示

在C语言中,一维数组的元素也存放于一片连续的存储空间中,故借助于C语言中的一维数组类型来描述线性表的顺序存储结构,即:

#include

#include

#define MAX 10 //顺序表最大的长度

#define datatype int

typedef struct

{

datatype data[MAX]; //顺序表的存储空间

int last; //当前顺序表最后个一个元素的下标

}sqlist,*sqlink; //顺序表说明符

void Clearlist(sqlink L)

{

L->last=-1; //用last来表示最后一个元素的下标,若last的值为-1,则表明顺序表里没值}

void Great_list(sqlink L)

{

int i;

for(i=0;i

{

L->data[i]=i; //给每一个元素赋初值

L->last++; //记录相应的下标

}

}

void Insert(sqlink L,int X,int n )

{

int i;

if(L->last>=MAX-1) //检查最后一个元素是否在范围内,不能大于顺序表的最大值{

printf("Overflow\n");

}

else if(n>L->last+1||n<1) //检查插入的数要在顺序表的范围内

{

printf("Position error\n");

}

else

{

for(i=L->last;i>=n;i--)

L->data[i+1]=L->data[i]; //顺序表元素右移,直到i=n

L->data[i+1]=X; //把该数插入到第n个里

L->last++; //把最后一个元素的下标加1 }

}

void Delete(sqlink L,int i)

{

int j;

if(i<=1||i>L->last) //检查被删除的数是否在该顺序表之中printf("Position error\n");

for(j=i;j<=L->last-1;j++) //L->last-1是把它转化成数组下标L->data[j-1]=L->data[j]; //data[j-1]是第j个数所对应在数组里的。

L->last--;

}

int main(void)

{

sqlink La;

La=(sqlink)malloc(sizeof(sqlist));

Clearlist(La);

Great_list(La);

int i;

for(i=0;i

{

printf("%d ",La->data[i]);

}

printf("\n");

Insert(La,20,4);

int n;

for(n=0;n

printf("%d ",La->data[n]);

printf("%d\n",La->last);

printf("\n");

Delete(La,5);

int m;

for(m=0;m

printf("%d ",La->data[m]);

printf("\n");

free(La);

return 0;

}

相关主题
文本预览
相关文档 最新文档