C++链表的建立和输出
class ChainNode
{
friend class Chain;
private:
int data;
ChainNode* link;
};
class Chain
{
public:
Chain();
~Chain();
ChainNode* creat();
void print();
private:
ChainNode* head;
};
#include<iostream>
using namespace std;
Chain::Chain()
{
head->link=NULL;
}
Chain::~Chain()
{}
ChainNode* Chain::creat()
{
ChainNode *r,*s;
head=new ChainNode;
r=head;
int x;
cout<<"请输入整数"<<endl;
cin>>x;
while(x!=0)
{
s=new ChainNode;
s->data=x;
r->link=s;
r=s;
cin>>x;
}
return head;
}
void Chain::print()
{
ChainNode *p;
p=head;
while(p!=NULL)
{
cout<<p->data;
p=p->link;
}
}
int main()
{
Chain* p;
p->creat();
p->print();
}
各位大神给看看代码什么问题啊
这个单链表的建立和输出
[解决办法]
Chain::Chain(){head->link=NULL; // 1, 野指针}Chain::~Chain(){ //2,可能内存泄漏}
[解决办法]
#include <iostream>using namespace std;class ChainNode{ friend class Chain;private: int data; ChainNode* link;};class Chain{public: Chain(); ~Chain(); ChainNode* creat(); void print();private: ChainNode* head;};Chain::Chain() : head(NULL){}Chain::~Chain(){ ChainNode* p = head; while(p) { ChainNode* next = p->link; delete p; p = next; }}ChainNode* Chain::creat(){ ChainNode *r,*s; //带头节点 head=new ChainNode(); r=head; r->link = NULL; int x; std::cout << "input an int:" << std::endl; cin>>x; while(x!=0) { s=new ChainNode(); s->data = x; s->link = NULL; r->link = s; r=s; cin>>x; } return head;}void Chain::print(){ ChainNode *p = head ? head ->link : NULL; while(p!=NULL) { cout<<p->data; p=p->link; }}int main(){ Chain c; c.creat(); c.print(); return 0;}