700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数据结构与算法2——线性顺序存储

数据结构与算法2——线性顺序存储

时间:2022-12-18 09:40:15

相关推荐

数据结构与算法2——线性顺序存储

线性表顺序结构,非链式:

包含两个部分:

1.数组内存放的是要存储的数据,同时给出最大容量;

2.最后一个数据的下标,由此可知实际存储的数据总数。

结构体描述:

typedef struct(){double data[max];//最多能存储的总数,表的最大容量int last;//last 是实际存储数据的最后一个的下标; }List;List *Ptrl;Ptrl->last+1 是存储的数据总数,即表的实际长度

数据表效果如图,要注意第几个数与下标之间的+1关系,避免代码出错:

建立空表函数,注意申请内存需要强制转换,否则是空指针的结构

List *Makeempty(){List *Ptrl;Ptrl=(List *)malloc(sizeof(List));Ptrl->last=-1;//空表return Ptrl; }

查找数据函数

int find(double x,List *Ptrl){ int i=0;while(Ptrl->data[i]!=x && i<=Ptrl->last)i++;if(i>Ptrl->last) return -1;else return i; }

插入函数,插入第i(1<=i<=last+2)个数据,即可以在下标0--last+1的位置上插入:

void add(double x,int i, List *Ptrl){ int j;if(Ptrl->last==max-1) {printf("full"); return;}//表内已经有max个数据if(i<1 || i>Ptrl->last+2) {printf("error"); return;}//只能插入第1个数到last+2个数for(j=Ptrl->last; j>=i-1; j--)Ptrl->data[j+1]=Ptrl->last[j]; ptrl->data[i-1]=x; Ptrl->last++;//存储实际数据个数加1,下标加1,注意更新数据总数 return; }

删除函数,删除第i个(1<=i<=last+1)数据,即可以删下标0-last的数据

void delete(int i,List *Ptrl){ int j;if(Ptrl->last==-1) {printf("empty"); return;}if(i<1||i>Ptrl->last+1) {printf("error"); return;}for(j=i-1;j<Ptrl->last;j++)Ptrl->data[j]=Ptrl->data[j+1]; Ptrl->last--;//实际存储数据个数-1,下标-1,注意更新数据总数 return; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。