• 单链表中利用表头节点(header node)


    单链表的设计一直被我认为很简单,最近细细看了一本书中对单链表的设计,发现其中有一些有意思的地方。

    1. 单链表中插入元素的操作,可以不用定位当前节点的前驱节点:

    1)temp_element = curr.element; tem_next = curr.next;//暂存当前节点的元素以及当前节点的后驱节点的指针

    2) curr.element = new_element;  //  将新元素赋值给当前节点的元素

    3) curr.next = new(temp_element, tem_next);  // 以1)中暂存的数据创建新的节点,并赋值给当前节点的后驱节点

    2. 但是单链表删除节点时同样会出现的前驱节点定位问题却不能用以上思路解决。根据《数据结构及算法分析》介绍,可以用引入

    表头节点并将curr设定为当前节点的前驱节点的方法来解决这一问题:

    删除:

    curr.next = curr.next.next;

    插入:

    curr.next = new node(new_elem, curr.next);

    这样就能很好地解决前去节点的定位了,换句话说,这能及一点点的空间代价换取高效的“插入”“删除”操作,很有意义。

  • 相关阅读:
    kaggle之员工离职分析
    Titanic幸存预测分析(Kaggle)
    学习python,第五篇
    VLAN入门知识
    复习下VLAN的知识
    复习下网络七层协议
    学习python,第四篇:Python 3中bytes/string的区别
    学习python,第三篇:.pyc是个什么鬼?
    学习python,第二篇
    学习python,第一篇
  • 原文地址:https://www.cnblogs.com/luweiseu/p/1693390.html
Copyright © 2020-2023  润新知