C++单链表的初始化问题

初学数据结构的单链表问题,书上重定义的东西很多不太了解,所以我写了两个代码段

问题:

1.这两个代码段实现的效果是等价的吗?
2.在第二段代码中 Linklist L 存放的是谁的地址呢?
3.我理解的注释的内容是否是正确的?

真的好难😭

//1.定义单链表结点的结构体
struct Node
{
    int data;
    struct Node* next;
};

int main()
{
    //声明一个指向单链表第一个节点的指针
    struct Node* L;
    L = new struct Node;    //创建新结点
    L->next = NULL;        //初始化操作

    system("pause");
    return 0;
}
//1.定义单链表结点的结构体
struct Node
{
    int data;    //数据域
    struct Node* next;    //指针域,存放后继节点的地址
};

typedef struct Node LNode;
typedef struct Node* Linklist;        //Linklist 相当于 struct Node*

//初始化链表
void InitList(Linklist &L)
{
    L = new LNode;    //创建新结点,包含数据域和指针域
    L->next = NULL;    //新结点的指针域为NULL
}

int main()
{
    //定义链表 L
    Linklist L;        //相当于struct Node* L;

    InitList(L);

    system("pause");
    return 0;
}

1.等价的
2.就是链表首元素地址
3.正确
另外,C++的话,结构体变量前面不用加struct,直接Node* L;就行,不用struct Node* L;