顺序表
顺序链表就像数组一样,创建链表时分配的空间已经是订好的了。大小为每一个Elem的大小×Elem个数。不支持动态分配(貌似也可以但是算法性能会下降)。
内存分配
分配内存时,是以区块来分配的,一分就分一大块。大小为每一个Elem的大小×Elem个数。不支持动态分配(貌似也可以但是算法性能会下降)。
功能
查找Elem很简单,只需要像数组一样用下标来表示就可以了。比如:
Q.base[Q.rear] = e;
优点与缺点
这种顺序链表最大的好处就是查找数据非常快,不适合经常要插入和删除的程序,对于查找,时间复杂度为O(1),插入和删除为O(n)。
顺序链表不适合插入删除,以及分配内存时一大块一大块分配会导致内存碎片的出现。这种碎片的出现原理与磁盘碎片的产生原理大致相同
单链表
还有一种链表叫做单向线性链表,简称单链表。
组成,特点
单链表不想顺序链表一样,每一个Elem是紧挨着的,它的位置在内存中是不确定的。每一个Elem由两部分组成,一个叫做指针域,一个叫做数据域。指针域用于存放指向下一个Elem的指针,如果是单链表的话就只有一个,一般叫做next,如果是双链表的话就有两个。