双向链表 静态链表作业

双向链表代码c35b78f9b724420195a40271b26eefce.png

 运行结果5521a8ce189548de9221c56d6ec8fa0a.png

 画图分析

0cee800ef63a403f97633df850d281b2.png

 思考:单链表与双链表

结构:单链表由一系列节点组成,每个节点至少包含一个数据域和一个指向下一个节点的指针域。这种结构使得单链表只能从头节点开始顺序访问各个节点。而双链表则在单链表的基础上,增加了一个指向前一个节点的指针域,使得双链表中的节点可以双向遍历。

操作复杂性:由于双链表具有双向遍历的能力,因此在执行插入和删除操作时,双链表可以比单链表更灵活。例如,在双链表中,可以在常数时间内找到节点的前驱节点,从而方便地执行删除操作。而在单链表中,找到前驱节点可能需要遍历整个链表,这会增加操作的复杂度。

空间需求:由于双链表每个节点需要存储两个指针(一个指向前一个节点,一个指向下一个节点),而单链表每个节点只需要存储一个指针(指向下一个节点),因此双链表在存储相同数量的节点时,会占用更多的内存空间。

静态链表代码873477feb68c4cfaa23ae74f936ba532.png

 运行结果28f411747dc7416f8c474ec42c89ca73.jpg

 思考:

静态链表是一种特殊的链表实现方式,它利用数组来描述线性表的链式存储结构。在静态链表中,每个数组元素存储两个信息:数据元素本身的值和游标(指示下一个元素的数组下标)。

优势:

节省空间:在静态链表中,只要预先分配一个足够大的数组空间,就可以避免在插入和删除元素时频繁地申请和释放内存空间,从而提高了空间的利用率。

易于管理:静态链表通过数组实现,可以利用数组的特性进行高效的访问和操作。例如,可以通过数组下标直接访问元素,这在某些场景下比链式存储结构更加方便。

稳定性好:由于静态链表在内存中占用的是连续的空间,因此相对于链式存储结构,它更不容易受到内存碎片化的影响,从而保证了较好的稳定性。

劣势:

需要预先分配空间:静态链表需要提前分配一个足够大的数组空间,如果实际存储的元素数量远小于数组的大小,那么就会造成空间的浪费。同时,如果分配的数组空间过小,无法满足实际存储需求,那么就需要进行扩容操作,这可能会带来额外的开销。

插入和删除操作可能复杂:在静态链表中插入或删除元素时,需要移动游标和更新相关元素的值。特别是当需要插入或删除的元素位于链表的中间或尾部时,可能需要遍历整个链表来找到相应的位置,这会导致操作的复杂度增加。

不易于动态扩展:静态链表的大小在初始化时就已经确定,因此在运行过程中无法动态地增加或减少其大小。这限制了静态链表在需要频繁改变大小的应用场景中的使用。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值