矢量和链接列表ADT之间的差异

时间:2011-02-26 07:20:37

标签: c vector data-structures linked-list adt

有人可以向我解释一下c编程语言环境中Vector和Linked List ADT之间的区别。

感谢。

4 个答案:

答案 0 :(得分:5)

好吧,在C中,没有像“C ++ std”库那样可以直接使用“向量”和“列表”数据类型。但就“抽象数据类型”而言,通常认为向量表示连续存储,并且链表被认为由链接在一起的各个单元表示。向量提供快速恒定时间随机访问读写操作,但插入和删除向量元素需要线性时间。列表具有线性查找性能以查找要读取和写入的元素,但是给定元素位置,具有恒定时间插入和删除。您还可以在常量时间内将项目添加到列表的开头和末尾(如果ADT实现缓存了列表中最后一个元素的位置)。

答案 1 :(得分:2)

向量通常作为数组实现为连续的内存块。而列表可以跨内存传播,因为每个元素都保存指向一个或多个其他元素的指针(可以是双重链接)。这为向量提供了访问速度优势,但列出了插入/删除优势。

答案 2 :(得分:0)

基本上,矢量驻留在连续的内存中。链表包含指向上一个和下一个结构的指针。随机访问的向量更快,链表更适合增长。

http://www.codeguru.com/forum/archive/index.php/t-309352.html

答案 3 :(得分:0)

vector是一个动态数组。里面的元素在内存中相邻。链表中的元素不相邻。