#include<bits/stdc++.h>
#include<vector>
using namespace std;
class Node {
public :
int data;
Node *next;
Node()
{
data = 0;
next = NULL;
}
Node (int a)
{ data = a;
next = NULL;
}
};
void push(Node **head_ref , int n)
{
Node *new_node = new Node();
new_node -> data = n;
new_node -> next = *head_ref;
*head_ref = new_node;}
void display(Node *head_ref)
{ while(head_ref != NULL)
{
cout << head_ref -> data << " ";
head_ref = head_ref-> next;
}
}
int main()
{ Node *head = new Node();
push (&head ,1 );
push(&head ,0 );
push(&head , 1);
display(head);
return(9);}
这在执行时返回1 0 1 0作为输出,起初我认为这是因为构造函数,但后来我知道这不是造成问题的原因。
Node *head = new Node();
创建额外的节点。而是使用
Node *head = nullptr;
或者,如果使用较旧的编译器,
Node *head = NULL;
以将CCD_ 1指向安全位置。
在您的代码中
Node *head = new Node();
创建一个新节点,第一个节点,然后通过三次调用push()
来创建其他3个节点。
变通办法?推送值后,执行head = head->next