求问各位一个创建单链表的问题
就是创建一个大小是size的链表,为啥下面第一种方法直接在无参构造函数里面输入size创建不了,第二种方法先在主函数输入size再传给构造函数却可以创建链表?
第一种方法:
#include "bits/stdc++.h"
using namespace std;
class Node{
public:
int data;
Node* next=NULL;
};
class List{
Node* head;
int size;
public:
List(){
cin>>size;
Node* p=head;
for(int i=0;i<size;i++){
Node* q=new Node();
cin>>q->data;
q->next=p->next;
p->next=q;
p=p->next;
}
}
Node* returnNode(int i){
Node* p=head;
for(int j=0;j<i;j++) p=p->next;
return p;
}
void print(){
for(int i=1;i<=size;i++) cout<<returnNode(i)->data<<" ";
cout<<endl;
}
};
int main(){
List list;
list.print();
return 0;
}
第二种方法:
#include "bits/stdc++.h"
using namespace std;
class Node{
public:
int data;
Node* next=NULL;
};
class List{
Node* head;
int size;
public:
List(int _size){
size=_size;
Node* p=head;
for(int i=0;i<size;i++){
Node* q=new Node();
cin>>q->data;
q->next=p->next;
p->next=q;
p=p->next;
}
}
Node* returnNode(int i){
Node* p=head;
for(int j=0;j<i;j++) p=p->next;
return p;
}
void print(){
for(int i=1;i<=size;i++) cout<<returnNode(i)->data<<" ";
cout<<endl;
}
};
int main(){
int size;
cin>>size;
List list(size);
list.print();
return 0;
}
比如输入
3
1 2 3
第一种方法创建不了:
第二种却可以:
请问各位这个是因为什么问题导致的呢?谢谢!