首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++链表的建立跟输出

2012-09-23 
C++链表的建立和输出class ChainNode{friend class Chainprivate:int dataChainNode* link}class Chai

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();
}
各位大神给看看代码什么问题啊
这个单链表的建立和输出

[解决办法]

C/C++ code
Chain::Chain(){head->link=NULL; // 1, 野指针}Chain::~Chain(){  //2,可能内存泄漏}
[解决办法]
C/C++ code
#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;} 

热点排行