关于顺序表和链表的一个疑问

lovezlina 2009-08-08 05:18:40
一个很简单的问题...我初学数据结构,看书上写顺序表查找比链表快,但是链表的插入,删除操作比顺序表快.
但是链表的插入,删除操作也要查找到需要操作的位置,但是查找比顺序表慢,这样的话感觉和顺序表平衡了.
比如插入操作
顺序表:查找:快;
插入:慢;
链表:查找:慢;
插入:快;

所以我想是不是顺序表的插入操作比链表的查找操作更慢,所以说链表的插入,删除操作比顺序表快?
不知道我的想法是否正确,望高手指教,谢谢!~~
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rebecca_zjy 2009-08-10
  • 打赏
  • 举报
回复
实际是很简单的道理啊:

查找第5项:
顺序表:直接到5
链表:(可能还有头、)0、1、2、3、4、5

5项中删除第3项:
顺序表:直接到3,删除3,4移动到3位置,5移动到4位置
链表:(头、)0、1、2、把2的后续指针连到4上

在4项的2后插入:
顺序表:到2、原4移动到5、原3移动到4、给3位置赋值
链表:(头、)0、1、2、把2的后续指针指到新节点上,新节点的后续指针指到原来的3上

比较一下就很容易知道哪个快哪个慢了,原因也很清楚
wltg2001 2009-08-10
  • 打赏
  • 举报
回复
顺序表的查找快是因为顺序表可以用索引值来直接访问,比如用数组实现时用数组下标来访问数组值,而链表却必须要用指针遍历到相应位置。顺序的插入和删除的慢是因为无论是插入还是删除都要移到数组中后面数据的位置,从查找角度来说,两者相同,但是链表找到后几个修改指针的语句就能完成,但是数组却一定要用循环来移位才能实现,所以慢
shakeyou123 2009-08-10
  • 打赏
  • 举报
回复
顺序表的查找直接用下标去查找,而链表则要通过移动指针(因为要想找到某个结点,必须先得到他前面的节点)
而插入操作,链表只要在找到位置后新增一个结点,修改指针就可以了,
想想顺序表呢,他后面的元素都要向后移动
feilinhe 2009-08-10
  • 打赏
  • 举报
回复
顺序表的插入删除涉及到移动数据的问题,所以显得慢
而链表只是修改指针指向就解决了
链表的一个好处就是长度可以无限的增长(如果内存足够的话)不必关心长度够不够,而顺序表插入的时候还要判断是否超过预定的长度,超过就要重新分配空间

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧