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

指针乱指有关问题。各位大大

2012-03-14 
指针乱指问题。。。求助各位大大class node{public:bool ticketchar name[20]node *nextnode(bool Ticket

指针乱指问题。。。求助各位大大
class node{
public:
bool ticket;
char name[20];
node *next;
node(bool Ticket = false,char *Name = "",node *Next = NULL):ticket(Ticket),next(Next){
int i = strlen(Name);
for(int j = 0;j<i;j++)
name[j]=Name[j];
}
};
class list
{
private:
node *head,*p;
public:
list(){
head = new node();
p=head->next;
}
void input();
void printf();
};

#include"plane.h"

void list::input()
{
node *d;
char Name[20];
cout<<"请输入订票人的姓名"<<endl;
cin>>Name;
d = new node(true,Name,p);
  p=p->next;
}

void list::printf()
{
node *d;
d=head->next;
while(d!=NULL)
{
cout<<"订票人姓名是"<<d->name<<endl;
d=d->next;
}
}
#include"plane.h"

int main()
{
list list1;
list1.input();
list1.printf();
return 0;
}
为什么老是出现内存错误啊。。。。求大大指教。。。

[解决办法]
Node构造函数node(bool Ticket = false,char *Name = "",node *Next = NULL)参数 Name的默认值改成node(bool Ticket = false,char *Name = NULL,node *Next = NULL)
[解决办法]

探讨

Node构造函数node(bool Ticket = false,char *Name = "",node *Next = NULL)参数 Name的默认值改成node(bool Ticket = false,char *Name = NULL,node *Next = NULL)

[解决办法]
class node
{
public:
bool ticket;
char name[20];
node *next;
node(bool Ticket = false,char *Name = "",node *Next = NULL):ticket(Ticket),next(Next)
{
strcpy(name, Name);
}
};


void list::input()
{
node *d;
char Name[20];
cout<<" 请输入订票人的姓名 "<<endl;
cin>>Name;
d = new node(true,Name,NULL);
p->next = d;
p=d->next;
}

即可
[解决办法]
构造函数写错了,没有copy最后一个'\0'。for循环条件应该是j<=i。如楼上做法才好。

热点排行