我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:棋牌游戏中心 > 工程观察哨 >

什么是哨兵结点有什么作用以及如何使用?详细些。。。谢谢啦(PA

归档日期:08-28       文本归类:工程观察哨      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  如果我们把第一个节点的prev指向最后一个节点,而把最后一个节点的next指向第一个节点,这样就形成了一个双向循环链表。

  哨兵(sentinel)是个哑元节点(dummy node),可以简化边界条件,使代码更紧凑,但对速度并没有什么帮助。

  在基于双向循环链表的实现中,可以设置一个哑元节点(dummy node)。这个节点,起哨兵的作用。也就是说它们并不存储任何实质的数据对象。初始时可以将哑元节点的next指向第一节点,prev指向最后一个节点。

  在一个带哨兵的环形双向链表中,哨兵节点介于头和尾之间,用nil[L]来表示。可以通过next[nil[L]]来访问表头,而用prev[nil[L]]来访问表尾。同样地,表尾的next域和表头的prev域都指向nil[L]。

  一个空链表仅含哨兵节点,这时next[nil[L]]和prev[nil[L]]都可以设置成nil[L]。

  我的理解是,哨兵节点是一种节点(废话),它一般只有一个,属于常数节点,一般他的含义是固定的.用于一些大量出现的重复值.

  平时我们一般会使用常数来实现这个,但是一些特定算法里面(比如说红黑树,他不允许有没有颜色的空节点,所以必须用一个黑色的nil哨兵节点来作为这个空的常数),需要使用节点作为常数.

本文链接:http://dojooflies.com/gongchengguanchashao/469.html