我创建了这个c ++程序来创建一个链表,但我无法打印列表的第一个元素。 请帮忙
这是我的代码。
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
class Node{
public:
int data;
Node* next;
void Insert(int x);
void Print();
};
Node* head;
void Node::Insert(int x){
Node* temp=new Node();
temp->data=x;
temp->next=head;
head=temp;
}
void Node::Print(){
Node* temp=head;
cout<<"List is "<<endl;
while(temp->next!=NULL){
cout<<temp->data<<" ";
temp=temp->next;
}
cout<<endl;
}
int main(){
head=NULL;
Node q;
cout<<"Enter number of elements"<<endl;
int n;
cin>>n;
int x;
for(int i=0; i<n; i++){
cout<<"ENter numbeR"<<endl;
cin>>x;
q.Insert(x);
q.Print();
}
return 0;
}
除第一个元素外,所有元素都打印出来。我不能搞错。
答案 0 :(得分:0)
在“打印”功能中,将temp->next
更改为temp
这是更新的代码,我在输出演示文稿格式中做了很少的修改:
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
class Node{
public:
int data;
Node* next;
void Insert(int x);
void Print();
};
Node* head;
void Node::Insert(int x){
Node* temp=new Node();
temp->data=x;
temp->next=head;
head=temp;
}
void Node::Print(){
Node* temp=head;
cout<<"List is "<<endl;
while(temp!=NULL){
cout<<temp->data<<" ";
temp=temp->next;
}
cout<<endl;
}
int main(){
head=NULL;
Node q;
cout<<"Enter number of elements: ";
int n;
cin>>n;
int x;
for(int i=0; i<n; i++){
cout<<"Input node element: ";
cin>>x;
q.Insert(x);
q.Print();
}
return 0;
}
答案 1 :(得分:0)
错误在:
while(temp->next!=NULL){
打印时。当列表只有一个元素时,该元素的next
属性将为NULL
。但是,由于此约束,程序不会进入while循环,因此不会打印它。您可以将其替换为:
while(temp!=NULL){
然后,将打印每个非null元素,即列表中的所有元素。