首页 > 试题广场 >

假设要存储一个数据集,数据维持有序,对其的操作只有插入、删除

[单选题]
假设要存储一个数据集,数据维持有序,对其的操作只有插入、删除和顺序遍历,综合存储效率和运行速度,下列哪种数据结构是最适合的是?
  • 数组
  • 链表
  • 哈希表
  • 队列
推荐
B
数组插入、删除需要移动数组元素,平均移动n/2
哈希表难以实现顺序遍历
队列插入删除效率低下
编辑于 2015-08-31 11:04:32 回复(3)
数组可以实现顺序遍历但是插入删除操作复杂,平均移动n/2个元素
链表因为存储的地址不连续(逻辑上连续实际上不连续),可以实现顺序遍历
哈希表是随机存储,所以是离散分布,顺序遍历实现不了
队列只可以在队尾插入队头删除,不可以实现中间插入和删除,不满足条件
综上,链表最合适
编辑于 2017-09-11 08:48:21 回复(4)
B
数组:最大的优势是支持随机访问,因为内存空间是连续的。但是插入、删除是绝对短板,涉及到内存空间的申请与释放。而顺序遍历和链式存储的时间复杂度一样。
链表:最大优势就是插入、删除十分方便,我们可以在链表的任何位置通过修改指针的指向,从而向链表当中插入新的结点。随机访问的效率十分低,时间复杂度为O(n),而数组随机访问的时间复杂度为O(1)。但本题目当中说得是顺序访问,二者的时间复杂度都是O(n)。
哈希表:哈希表的底层实现是数组,因为计算出来哈希值,我们要快速索引到相应哈希值的位置。插入和删除操作,我不晓得高不高效,因为可能会出现存储上的冲突,此时就要执行冲突规避的方法。另外,顺序访问肯定也是比较复杂的,链表和数组直接无脑地下一位即可,但是哈希表得计算哈希值再由哈希值访问到相应的内存位置。
队列:它的存储可以是连续或者离散的,我们得从队列的性质出发,它最大的特点就是只支持队尾插入和队头删除,这种操作模式比较死板,而链表则可以在任何位置进行插入及删除操作。顺序遍历可能都差不多,所以我们肯定是要选链表的。
发表于 2021-07-05 14:00:00 回复(0)
数组一般不进行插入或者删除操作P91, 对于一般的单向链表来说插入删除比较方便,但只适合顺序遍历。 哈希表几乎可以实现随机存取,但是要求存储空间啊之类的,对于题目来说显然是在说链表。
编辑于 2016-01-08 17:48:29 回复(0)
B
数组可以实现顺序遍历但是插入删除操作复杂,尤其是数据量大的时候,前移或后移的数据量是非常吓人的;
链表插入和删除,只需要改变一下指针的指向就可以了,遍历的时候就是O(n),从头到尾来一遍就可以了;
哈希表是随机存储,所以是离散分布,顺序遍历实现不了
队列只能在端点操作,即只可以在队尾插入队头删除(FIFO),不可以实现中间插入和删除,不满足条件
综上,链表最合适
发表于 2018-05-27 17:08:11 回复(0)
B
数组:插入,删除操作需移动其他元素,时间复杂度太大
链表:插入,删除操作无需移动其他元素,且可实现顺序遍历
哈希表:散列存储,无法实现顺序遍历
队列:只能在两端进行插入删除操作,无法实现中间的插入删除操作

发表于 2019-10-15 23:26:34 回复(0)

B数组插入、删除需要移动数组元素效率低下
哈希表添加时离散的
队列只能末尾添加

编辑于 2018-03-05 21:41:13 回复(0)
B 数组是固定大小  队列只能末尾进行添加  哈希表是离散的,跟排序没有关系,离散的无序
发表于 2018-02-26 10:24:08 回复(0)
因为其存储的地址不是连续的,所以链表最合适
发表于 2017-08-25 18:02:30 回复(0)

插入删除操作速度:链表 > 哈希表(散列存储,需要开辟较大空间) > 数组(需要多次移位操作) > 队列(删除效率低下)

顺序遍历:链表(可以实现顺序遍历)、数组(可以实现顺序遍历)、哈希表(散列存储,无法进行顺序遍历)、队列(只能在队列端点进行操作)

综上,使用链表是最优选择。

发表于 2022-09-19 16:22:48 回复(0)
队列是操作受限的线性表,它无法在中间位置插入元素,只能处理队头和队尾的元素
发表于 2022-07-01 12:23:05 回复(0)
数组插入、删除需要移动数组元素,平均移动n/2
哈希表难以实现顺序遍历
队列插入删除效率低下
数组可以实现顺序遍历但是插入删除操作复杂,平均移动n/2个元素
链表因为存储的地址不连续(逻辑上连续实际上不连续),可以实现顺序遍历
哈希表是随机存储,所以是离散分布,顺序遍历实现不了
队列只可以在队尾插入队头删除,不可以实现中间插入和删除,不满足条件
综上,链表最合适

发表于 2022-04-12 14:17:44 回复(0)
链表是啥呀?python中的?还是java中的?
发表于 2022-02-11 20:06:05 回复(1)
如果不是顺序遍历,就能选数组了吧
发表于 2020-08-28 09:23:01 回复(0)
选B
数组插入、删除需要移动数组元素,平均移动n/2
哈希表难以实现顺序遍历
队列插入删除效率低下

编辑于 2020-06-27 09:50:38 回复(0)
&

我去,题目理解错意思了。。。

发表于 2020-04-09 16:15:35 回复(0)
Hashtable提供了hashTable[aKey]的方式引用其包含的对象,却并没有提供数字指向的索引器,就是说用惯了Array数组的我们,不能用hashTable[0]之类的办法来检索它的内容
发表于 2019-10-27 23:42:19 回复(0)
B 数组在插入和删除时,数据迁移,数据区要不断覆盖,平均移动n/2个节点。 链表在插入和删除时的时间复杂度都是O(n)。 map不适合数据的插入和删除操作。
发表于 2019-03-20 12:07:02 回复(0)
b,队列和数组在实现插入时,想保持有序需要移动的元素较多,哈希表是无序表
发表于 2018-11-14 00:18:12 回复(0)
B
发表于 2018-10-25 18:57:51 回复(0)
B
 数组删除与插入需要移位
哈希表需要一次开辟较大的存储空间,而且不能顺序遍历
队列先进先出,无法删除和插入
发表于 2018-10-25 17:25:54 回复(1)