我何时在C ++中使用链接列表与堆栈

时间:2016-04-07 20:58:33

标签: linked-list stack

我知道在链表中你不需要预先分配的内存,插入和删除方法真的很容易,我真正了解堆栈的唯一方法就是push和pop方法。

2 个答案:

答案 0 :(得分:1)

链接列表适用于在随机位置插入和删除元素。在堆栈中,我们只会附加到末尾或从末尾删除。

答案 1 :(得分:0)

链接列表与数组(堆栈)

阵列和链接列表都可用于存储相似类型的线性数据,但它们都有一些优点和缺点。

以下是有利于链接列表的要点。

(1)数组的大小是固定的:所以我们必须事先知道元素数量的上限。此外,通常,分配的内存不论用途如何都等于上限,在实际使用中,很少达到上限。

(2)在元素数组中插入一个新元素是很昂贵的,因为必须为新元素创建空间并创建空间,现有元素必须移位。

例如,假设我们在数组id []中维护一个已排序的ID列表。

id [] = [1000,1010,1050,2000,2040,...... ..]。

如果我们想插入新的ID 1005,那么为了维护排序的顺序,我们必须在1000之后移动所有元素(不包括1000)。

除非使用某些特殊技术,否则删除对于数组来说也很昂贵。例如,要删除id []中的1010,必须移动1010之后的所有内容。

因此,链接列表提供了超过数组的以下两个优点 1)动态尺寸 2)易于插入/删除

链接列表有以下缺点: 1)不允许随机访问。我们必须从第一个节点开始按顺序访问元素。所以我们不能用链表进行二进制搜索。 2)列表的每个元素都需要指针的额外内存空间。 3)数组具有更好的缓存局部性,可以在性能上产生很大的差异。