新ces学法是真是假:什么是假脑袋 (dummy head)

所以我想知道什么是链表中的虚拟头 / 虚拟节点。有人可以告诉我定义,给我一个例子吗?

13

虚拟节点更像是一个黑客,通常用于避免为边缘情况编写额外的代码。

考虑以下在链表中的尾部插入的情况:

void insertAtTail(Node oldTail, int i){
    Node newTail = new Node(i);
    oldTail.next = newTail;
    return newTail;
}

当 oldTail 不为 null 时,这工作正常。但是想象一下我们试图在空列表上执行 insertAtTail () 的场景。如果节点为 null,上面写的代码将不起作用。因此,我们必须处理检查 oldTail 是否为 null 的边缘情况:

Node insertAtTail(Node oldTail, int i){
    Node newTail = new Node(i);
    if(oldTail == null) {return newTail;}
    oldTail.next = newTail;
    return newTail;
}

在这样的场景中,虚拟节点会派上用场。想象一下,我有一个虚拟节点,如下所示:

Node dummy = new Node(0);

现在我们将这个虚拟节点传递给调用函数:

insertAtTail(dummy, 5);

当一个虚拟节点被传递给调用函数时,你会发现这里不需要检查虚拟节点是否为 null。因此,我们可以跳过空节点的检查:

Node insertAtTail(Node dummy, int i){
    Node newTail = new Node(i);
    dummy.next = newTail;
    return newTail;
}

正如你所看到的,我已经删除了检查空这里。

10

当链表的不指向任何节点时,您将创建一个从该指向的虚拟头(节点)。这样,您将始终能够到达例如head.valhead.next,而无需执行任何额外的空检查。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(271)
用c语言比较三个数的大小:三个数组中三个附近的数字(find the closest entries in three sort
上一篇
弦音cp愁凑:Android中的 FSK调制和播放正弦音调
下一篇

相关推荐

  • comeandgetyourlove音乐爱就在你身边

    Come and Get Your Love是一首热门的歌曲,由美国摇滚乐队Redbone演唱。这首歌曲于1974年发行,被收录在他们的专辑《Wovoka》中。歌曲以放克曲风为主,旋律活泼,曲调悠扬,歌词朗朗上口,深受歌迷喜爱。…

    2023-06-29 07:47:31
    0 55 18
  • codeblocks无法编译运行:Codeblocks无法编译运行的解决方案

    codeblocks无法编译运行的原因可能有很多,下面以一段简单的C语言代码为例,来说明codeblocks无法编译运行的情况。…

    2023-07-11 08:01:55
    0 29 13
  • gitlab ci 自动化部署:使用 Gitlab CI 自动化部署提升开发效率

    GitLab CI 自动化部署是一种基于 GitLab CI/CD 的自动化部署方案,可以实现快速、可靠的部署流程。它将代码提交、构建、测试、部署等步骤集成在一起,使得开发者可以更加轻松地完成部署工作。下面是一个示例 .gitlab-ci.yml 文件,可以帮助你实现 GitLab CI 自动化部署:…

    2023-05-20 05:45:38
    0 80 20
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-05-16 07:36:03
    0 91 32
  • js添加css:This is a Title

    使用js添加css可以通过修改元素的style属性来实现,具体代码如下:…

    2023-05-27 12:30:24
    0 13 92
  • css 字符间距:### 世界上最美的地方

    示例示例CSS 字符间距是指在文本中的字符之间添加间距,以增强文本的可读性。它可以使文本更容易阅读,也可以使文本看起来更美观。代码示例:…

    2023-04-15 08:45:29
    0 92 38
  • git 删除commit记录:回滚Git Commit记录

    git删除commit记录可以使用git reset命令。使用方法:…

    2023-07-07 04:31:44
    0 15 90
  • java实现tcp:使用Java实现TCP网络编程

    TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它使用三次握手来建立可靠的连接,并且在数据传输期间可以检测丢失的数据包并重新发送。…

    2023-01-31 10:33:14
    0 29 62

发表评论

登录 后才能评论

评论列表(65条)