文档详情

第2章-线性表及其顺序存储.pptx

发布:2024-09-07约9.4千字共147页下载文档
文本预览下载声明

普通高等教育国家级规划教材《数据结构》(C语言版);第2章线性表及其顺序存储;主要内容;线性表;线性表;例1、26个英文字母组成的字母表

(A,B,C、…、Z);例3学生信息表:;从以上例子可看出线性表的逻辑特征是:;信息系统;location(ki+1)=location(ki)+len;/*顺序表的头文件,文件名sequlist.h*/

#defineMAXSIZE100

typedefintdatatype;

typedefstruct{

datatypea[MAXSIZE];

intsize;

}sequence_list;;voidinit(sequence_list?slt)

{

slt-size=0;

};voidappend(sequence_list?slt,datatypex)

{

if(slt-size==MAXSIZE)

{printf(顺序表是满的!);exit(1);}

slt-a[slt-size]=x;

slt-size=slt-size+1;

};voiddisplay(sequence_listslt)

{

inti;

if(!slt.size)

printf(\n顺序表是空的!);

else

for(i=0;islt.size;i++)

printf(%5d,slt.a[i]);

};voiddisplay(sequence_list*slt)

{

inti;

if(slt-size)

printf(\n顺序表是空的!);

else

for(i=0;islt-size;i++)

printf(%5d,slt-a[i]);

};intempty(sequence_list*slt)

{

return(slt-size==0?1:0);

};intfind(sequence_list*slt,datatypex)

{

inti=0;

while(islt-sizeslt-a[i]!=x)

i++;

return(islt-size?i:?1);

};intfind(sequence_list*slt,datatypex)

{

inti=0;

while(islt-sizeslt-a[i]!=x)

i++;

if(slt-a[i]==x)returni;elsereturn-1;

};intfind(sequence_list*slt,datatypex)

{

inti=slt-size-1;

while(i=0slt-a[i]!=x)

i--;

return;

};对于具有n个元素的顺序表

查找成功情况下:

最好情况1次;最坏情况n次。

等概率情况的平均查找次数:;算法2.6取得顺序表中第i个结点的值;datatypeget(sequence_list*slt,inti)

{

if(i0||i=slt-size)

{

printf(\n指定位置的结点不存在!);exit(1);

}

else

returnslt-a[i];

};算法2.7顺序表的插入运算;顺序表的插入运算是将一个值为x的结点插入到顺序表的第i个位置0≤i≤n,即将x插入到ai-1和ai之间,如果i=n,则表示插入到表的最后,一般地可表示为:;3;3;voidinsert(sequence_list?slt,datatypex,intposition)

{inti;

if(slt-size==MAXSIZE)

{printf(\n顺序表是满的!没法插入!);exit(1);}

if(position0||positionslt-size)

{printf(\n指定的插入位置不存在!);exit(1);}

for(i=slt-size;iposition;i--)slt-a[i]=slt-a[i?1];

slt-a[position]=x;slt-size+

显示全部
相似文档