输出不了·~

qlj86314901 2008-09-27 08:41:12
为什么 输出函数会有错误·~求高手解释一下
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
int size;
Node* head;
public:
LinkList();
void Insert();
void Print();
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}
void LinkList::Insert()

{
int a[7]={1,2,3,4,5,6,7};
int i=0;
Node* p;
Node* q;
Node* head;
head=new Node(0,a[0]);
p=head; //p=q;
for(i=1;i <=6;i++)
{
q=new Node(i,a[i]); //q=新节点
p->next=q; //连接新节点
p=p->next; //p移到链表尾
size++;
}
p=head;
}
void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i<=6;i++)
{
cout<<p->code<<" ";
p=p->next;
}
}

void main()
{
LinkList L;
L.Insert();
L.Print();

}
...全文
79 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qlj86314901 2008-09-28
  • 打赏
  • 举报
回复
谢谢各位~~
kkndciapp 2008-09-27
  • 打赏
  • 举报
回复
其他地方都没有错,就是多定义了一个head,覆盖了成员head,帮你改了下
#include <iostream.h> 
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
int size;
Node* head;
public:
LinkList();
void Insert();
void Print();
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
head=NULL;
}
void LinkList::Insert()

{
int a[7]={1,2,3,4,5,6,7};
int i=0;
Node* p;
Node* q;
//Node* head; 这里又定义一个head错误
head=new Node(0,a[0]);
p=head; //p=q;
for(i=1;i <=6;i++)
{
q=new Node(i,a[i]); //q=新节点
p->next=q; //连接新节点
p=p->next; //p移到链表尾
size++;
}
}
void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i <=6;i++)
{
cout <<p->code <<" ";
p=p->next;
}
}

void main()
{
LinkList L;
L.Insert();
L.Print();

}
kkndciapp 2008-09-27
  • 打赏
  • 举报
回复
帮你改了下
#include <iostream.h> 
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
int size;
Node* head;
public:
LinkList();
void Insert();
void Print();
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
head=NULL;
}
void LinkList::Insert()

{
int a[7]={1,2,3,4,5,6,7};
int i=0;
Node* p;
Node* q;
//Node* head; 这里又定义一个head错误
head=new Node(0,a[0]);
p=head; //p=q;
for(i=1;i <=6;i++)
{
q=new Node(i,a[i]); //q=新节点
p->next=q; //连接新节点
p=p->next; //p移到链表尾
size++;
}
cout<<head->next->code;
}
void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i <=6;i++)
{
cout <<p->code <<" ";
p=p->next;
}
}

void main()
{
LinkList L;
L.Insert();
L.Print();

}
nullah 2008-09-27
  • 打赏
  • 举报
回复

//注释掉了insert函数中的head声明 原因请看注释
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;

typedef int DataType;

class Node
{
friend class LinkList;

private:
int num;
Node* next;
DataType code;

public:
Node(int i,const DataType& x);
};

Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}

class LinkList
{
private:
int size;
Node* head;

public:
LinkList();
void Insert();
void Print();
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}

void LinkList::Insert()
{
int a[7]={1,2,3,4,5,6,7};
int i=0;
Node* p;
Node* q;
//Node* head; //屏蔽了private变量,事实上函数退出是head的地址为0xcccccccc
head=new Node(0,a[0]);
p=head; //p=q;
for(i=1;i <=6;i++)
{
q=new Node(i,a[i]); //q=新节点
p->next=q; //连接新节点
p=p->next; //p移到链表尾
size++;
}

p=head;
}

void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i <=6;i++)
{
cout <<p->code <<" ";
p=p->next;
}
}

void main()
{
LinkList L;
L.Insert(); //如果不注释掉Node *head;此时查看head的地址是null
L.Print();
}
XiaoG602 2008-09-27
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstdlib>
using namespace std;

typedef int DataType;

class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};

Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}

class LinkList
{
private:
int size;
Node* head;
public:
LinkList();
void Insert();
void Print();
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}

void LinkList::Insert()
{
int a[7]={1,2,3,4,5,6,7};
head=new Node(0,a[0]);//LZ重新定义了一个head,将对象的head覆盖了,这样就可以了
int i=0;
Node* p;
Node* q;
q=p=head; //p=q;
for (i=1;i <=6;i++)
{
q=new Node(i,a[i]); //q=新节点
p->next=q; //连接新节点
p=p->next; //p移到链表尾
size++;
}
p=head;
}

void LinkList::Print()
{
Node* p;
p = head;
for (int i=0;i <=6;i++)
{
cout<<p->code<<" ";
p=p->next;
}
}

int main()
{
LinkList L;
L.Insert();
L.Print();
return 0;

}
OhFish 2008-09-27
  • 打赏
  • 举报
回复

void LinkList::Insert()
{
int a[7]= {1,2,3,4,5,6,7};
int i=0;
Node* p;
Node* q;
//Node* head; //此句覆盖了LinkList::head,注释掉
head=new Node(0,a[0]);
p=head; //p=q;
for(i=1;i <=6;i++)
{
q=new Node(i,a[i]);
p->next=q;
p=p->next;
size++;
}
//p=head; //这句是做什么用的?
}
jia_xiaoxin 2008-09-27
  • 打赏
  • 举报
回复
头指针要定义成全局的
jia_xiaoxin 2008-09-27
  • 打赏
  • 举报
回复
是因为你定义的head和系统定义的head冲突

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
typedef int DataType;

class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}

Node* newhead;
class LinkList
{
private:
int size;
Node* head;
public:
LinkList();
void Insert();
void Print();
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}
void LinkList::Insert()

{
int a[7]={1,2,3,4,5,6,7};
int i=0;
Node* p;
Node* q;
//Node* newhead;
newhead=new Node(0,a[0]);
p=newhead; //p=q;
for(i=1;i <=6;i++)
{
q=new Node(i,a[i]); //q=新节点
p->next=q; //连接新节点
p=p->next; //p移到链表尾
size++;
}
p=newhead;
}

void LinkList::Print()
{
Node* p;
p = newhead;
for(int i=0;i <=6;i++)
{
cout <<p->code <<" ";
p=p->next;
}
}

void main()
{
LinkList L;
L.Insert();
L.Print();

}
hooked 2008-09-27
  • 打赏
  • 举报
回复
带指指成员的类要重载拷贝构造函数,赋值操作符,析构函数,不然用默认的话指针是会出问题的。
ttkk_2007 2008-09-27
  • 打赏
  • 举报
回复
初始化的时候,你链表最后一个节点的next没有赋值为NULL

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧