当我使用类执行链表时,它会显示一个额外的零


#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

相关内容

  • 没有找到相关文章