虚拟头结点是否是空结点

       在链表的学习中,经常要用到虚拟头结点。

       虚拟头结点是人为创建的一个结点,它指向真正的头结点,创建方式为:ListNode* dummyHead = new LIstNode(0),它并非是真实存在的结点,只是为了方便对链表进行增删改查等操作,而人为创建,起到一个辅助作用。

       那么,现在有一个问题?虚拟头结点既然不是一个真实存在的结点,那么它是否是一个空结点呢?答案为:虚拟头结点不是一个空结点。理由如下:

      非空结点一般有两个变量,一个自身存储的值(val),一个指向下一个结点的指针(next)。而虚拟头结点都具备这两个条件,首先虚拟头结点指向真正的头结点,有指向;其次,虚拟头结点在创建的过程中,已经赋值了,ListNode* dummyHead = new LIstNode(0),这个语句即将虚拟头结点的值赋值为0.

     既然虚拟头结点具备一般非空结点的条件,那么虚拟头结点就不是空结点。

你可能感兴趣的:(c++,数据结构与算法,经验分享,C++,数据结构与算法,链表,虚拟头结点,指针)