当我使用 class 执行链接列表时,它显示一个额外的零
when I execute linked list using class it shows an extra zero
#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);}
这在执行时 returns 1 0 1 0 作为输出,起初我认为这是因为构造函数但后来我才知道这不是导致问题的原因。
在你的代码中
Node *head = new Node();
创建一个新节点,第一个节点,然后通过三次调用 push()
创建其他 3 个节点。
解决方法?推送值后,执行 head = head->next
Node *head = new Node();
创建额外的节点。而是使用
Node *head = nullptr;
或者,如果使用较旧的编译器,
Node *head = NULL;
将 head
指向安全位置,直到添加合法节点。
#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);}
这在执行时 returns 1 0 1 0 作为输出,起初我认为这是因为构造函数但后来我才知道这不是导致问题的原因。
在你的代码中
Node *head = new Node();
创建一个新节点,第一个节点,然后通过三次调用 push()
创建其他 3 个节点。
解决方法?推送值后,执行 head = head->next
Node *head = new Node();
创建额外的节点。而是使用
Node *head = nullptr;
或者,如果使用较旧的编译器,
Node *head = NULL;
将 head
指向安全位置,直到添加合法节点。