wordpress这么安装不了,aso搜索优化,如何开发微信小程序,网站在谷歌怎么做排名线性表
线性表#xff1a;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的 数据结构#xff0c;常⻅的线性表有顺序表、链表、栈、队列、字符串等等
线性表在逻辑上是线性结构#xff0c;也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连…线性表
线性表是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的 数据结构常⻅的线性表有顺序表、链表、栈、队列、字符串等等
线性表在逻辑上是线性结构也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的 线性 表在物理上存储时通常以数组和链式结构的形式存储
什么叫做逻辑上是线性结构嘞就是说他在我们想象中的样子是连续的就像是一串字符串我们都会觉得他是连续的但是他在物理上不一定连续
顺序表
顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构⼀般情况下采⽤数组存储。
他这个数组的储存很有意思那为什么不直接说是数组呢非要画蛇添足的说它顺序表吗
采用数组就是顺序表的底层逻辑是数组但是顺序表会在他的基础上添加一些东西
顺序表的实现
首先和顺序表不可分割的就是结构体指针动态内存管理
静态顺序表
typedef int seqlista//因为不知道什么类型的就自己定义一个类型改的话好改
struct seqlist{seqlista arr[N];//定长数组int size;//有效数据的个数
}而由于是静态的就会出现空间的一系列问题比如空间的大了怎么办等等
所以我们还有动态顺序表
动态顺序表
动态顺序表和静态顺序表有点不一样
typedef int seqlista
struct seqlist
{seqlista *a;//指针int size;//有效的数据个数int capacity;//空间容量按照份数来
}动态顺序表的实现
说了这么多让我们粗略的实现一下动态顺序表吧
头文件的函数的定义
#includestdio.h
#includestdlib.htypedef int ever;struct seqlist {ever* arr;//数组int size;//有效数组个数int cap;//容量单位
};//动态顺序表void yttandb(struct seqlist* b);//初始化void pushback(struct seqlist* b, ever x);//尾插函数的实现
#includeseqlist.hvoid yttandb (struct seqlist* a) {a-arr NULL;a-size a-cap 0;
}//初始化void pushback(struct seqlist* a, ever b) {if (a-size a-cap)//空间不够{int newcap a-cap 0 ? a-cap 4 : a-cap * 2;ever* tmp (ever*)realloc(a-arr, newcap * sizeof(ever));a-arr tmp;a-cap newcap;}a-arr[a-size] b;
}
函数的调用
#includeseqlist.h
void SLTest()
{struct seqlist sl;yttandb(sl);pushback(sl, 1);pushback(sl, 2);pushback(sl, 3);pushback(sl, 4);
}int main()
{SLTest();return 0;
}今天的知识讲解完啦如果觉得有用可以点一下赞和关注也可以先收藏以防需要时找不到哦当然如果作者写的哪里有问题欢迎指出我们一起进步 祝看到这里的人天天开心哦笔芯