表、栈、队列是数据结构与算法分析的第二章,其中我要讲的数据结构是来自于我看了各种书跟博客之后的总结跟理解,算法主要是算法导论这本书,讲述的的标准是C语言的标准, 并且我们讨论的常说的数据结构都是抽象的逻辑存在的,大家最好去看一下大O记法怎么计算算法速度跟空间的,我们很多时候就是为了这个效率跟空间弄出了很多抽象数据结构。
接下来先讲表。。。。表这个是书上写的 其实应该是链表跟顺序表两样。
表(list)
先说顺序表:
我们管形如A1,A2,A3,A4......AN-1的一般表,这个表的长度是N(从0开始的),大小为0的表叫空表,下面我们用表结构实现一个数组,我C没学过,只能大概写写可能有错误大家多包含意思懂了就可以。
<span> </span>L.elem=(Elemtype *)malloc(LIST_INIT_SIZE* sizeof(Elemtype));
<span> </span>
解释下上述代码malloc是分配内存空间的语句,list_init_size 就是分配的大小 sizeof是获取Elemtype里面所有数据类型的长度根据长度分配内存空间。这样就开辟了一块连续内存了,接下来要给他分配null或者初始化为0才行。不然这一块内存有之前别的程序存过的数据所以报错。数组的特性是一块连续的内存,添加在最后一个位置,插入和删除的时候如果后面有元素就让后面的元素地址后移然后把他添加进去。如果他非常长的话,你需要找到那个插入的位置然后让后面的所有元素都往后退一位由N变成N+1。如果后面特别多,就特别消耗资源。 <