数据结构论坛

首页 » 分类 » 定义 » C语言实现顺序表的基本操作
TUhjnbcbe - 2024/8/25 9:05:00
北京治疗白癜风哪个医院 https://wapjbk.39.net/yiyuanzaixian/bjzkbdfyy/

线性表的顺序存储结构:在内存中找到一块空间,把一定的内存空间占了,然后把相同数据类型的数据元素依次存放在这块空间中,这也就是顺序表。今天带大家一起来学习顺序表的基本操作:顺序表空、顺序表满、插入元素、删除元素、查找元素。

1.顺序表特点

a)逻辑上相邻的元素在物理位置上也相邻。

b)随机访问效率高,插入和删除操作效率低。

2.顺序表的定义

#defineMAX_SIZE64//线性表最大长度

typedefstruct

{

typedata[MAX_SIZE];//元素数组,type为元素的实际类型

intlength;//元素个数

}SeqList;

注:这里为减少复杂度和更好的理解,使用固定的长度,避免了动态分配。

3.基本数据操作

a)顺序表为空

intListEmpty(SeqList*list)

{return(list-length==0?1:0);}

b)顺序表满

intListFull(SeqList*list)

{return(list-length==MAX_SIZE?1:0);}

c)插入元素

//成功插入返回0,出错返回-1

intListInsert(SeqList*list,inti,typenewData)

{

//有效性检测

if(NULL==list

list-length=MAX_SIZE

i0

i=MAX_SIZE)

{return-1;//error}

//元素后移

for(intj=list-length-1;j=i;j--)

{list-data[j+1]=list-data[j];}

//插入新元素

list-data=newData;

list-length+=1;

return0;

}

d)删除元素

//成功返回0,出错返回-1

intListDelete(SeqList*list,inti)

{

//参数有效性检查

if(NULL==list

list-length==0

i0

ilist-length-1)

{return-1;//error}

//删除元素

for(intj=i;jlist-length-1;j++)

{list-data[j]=list-data[j+1]}

list-length-=1;

return0;

}

e)查找元素

//查找第一个元素key的索引,没找到返回-1

intListFind(SeqList*list,typekey)

{

if(NULL==list)

{return-1;}

for(inti=0;ilist-length;i++)

{

if(list-data==key)

{returni;}

}

return-1;

}

有关数据结构中的顺序表我们今天就讲到这里啦!欢迎继续

1