哨兵向导是什么意思,什么是哨兵结点,有什么作用,以及如何使用?详细些。。。谢谢啦(PASCAL语言)
答案:1 悬赏:10 手机版
解决时间 2021-05-14 21:05
- 提问者网友:记得曾经
- 2021-05-14 09:59
哨兵向导是什么意思,什么是哨兵结点,有什么作用,以及如何使用?详细些。。。谢谢啦(PASCAL语言)
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-05-14 11:36
双向循环链表:
如果我们把第一个节点的prev指向最后一个节点,而把最后一个节点的next指向第一个节点,这样就形成了一个双向循环链表。
哨兵(sentinel):
哨兵(sentinel)是个哑元节点(dummy node),可以简化边界条件,使代码更紧凑,但对速度并没有什么帮助。
在基于双向循环链表的实现中,可以设置一个哑元节点(dummy node)。这个节点,起哨兵的作用。也就是说它们并不存储任何实质的数据对象。初始时可以将哑元节点的next指向第一节点,prev指向最后一个节点。
在一个带哨兵的环形双向链表中,哨兵节点介于头和尾之间,用nil[L]来表示。可以通过next[nil[L]]来访问表头,而用prev[nil[L]]来访问表尾。同样地,表尾的next域和表头的prev域都指向nil[L]。
因为next[nil[L]]指向表头,我们可以去掉属性head[L],把对它的引用换成对next[nil[L]]的引用。
一个空链表仅含哨兵节点,这时next[nil[L]]和prev[nil[L]]都可以设置成nil[L]。
如果我们把第一个节点的prev指向最后一个节点,而把最后一个节点的next指向第一个节点,这样就形成了一个双向循环链表。
哨兵(sentinel):
哨兵(sentinel)是个哑元节点(dummy node),可以简化边界条件,使代码更紧凑,但对速度并没有什么帮助。
在基于双向循环链表的实现中,可以设置一个哑元节点(dummy node)。这个节点,起哨兵的作用。也就是说它们并不存储任何实质的数据对象。初始时可以将哑元节点的next指向第一节点,prev指向最后一个节点。
在一个带哨兵的环形双向链表中,哨兵节点介于头和尾之间,用nil[L]来表示。可以通过next[nil[L]]来访问表头,而用prev[nil[L]]来访问表尾。同样地,表尾的next域和表头的prev域都指向nil[L]。
因为next[nil[L]]指向表头,我们可以去掉属性head[L],把对它的引用换成对next[nil[L]]的引用。
一个空链表仅含哨兵节点,这时next[nil[L]]和prev[nil[L]]都可以设置成nil[L]。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯