这里我有一些我遇到问题的代码:
struct Node
{
String data;
Node * next;
};
struct List
{
Node * head;
};
static Node * nouvNode (string word,Node *p = nullptr){
Node *pNouv = new Node ;
pNouv->data =word;
pNouv->next = p;
return pNouv;
好吧,这是我的问题:
1)pNouv这是我创建的指针,指向一个节点。
当我做pNouv=>next=p
时,是否意味着我在pNouv中的指针指向指针p指向的下一个节点?或者我的指针指向一个注释,它也有一个指针指向另一个节点,其中P指向同一个方向?
2)static Node * nouvNode (string word,Node *p = nullptr)
这是一种创建包含数据的新节点的方法,但为什么需要有" Node * p = nullptr"在参数?
当我在程序中创建节点时,我会执行此操作nouvNode(word, ls.head)
。
感谢您的帮助。
答案 0 :(得分:0)
1)pNouv->next = p
表示由next
指向的结构中的结构成员pNouv
设置为指向与p
相同的内容。所以有一块内存。 pNouv
指向那块内存。在该内存块的某处,您可以放置p
的地址。
2)= nullptr
加法使该参数可选。您可以有效地致电nouvNode(word)
,并且您会收到一个值为word
的节点,该节点未指向下一个节点。
答案 1 :(得分:0)
pNouv->next=p
根据我的理解,如果执行上述语句pNouv
节点开始指向p
节点,这只是NULL
。所以上面的代码语句相当于
pNouv=>next=NULL;
2)static Node * nouvNode (string word,Node *p = nullptr)
传递Node *p = nullptr
作为第二个参数是可选的。
你只需要word
。您始终可以在函数体中创建一个新节点,并从头部遍历,然后最终将新创建的节点定位在所需位置。