C++问题,输出,程序崩溃

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:10:41
这个程序开始执行还好
但是加了print()函数后,运行程序到输出过后程序就崩溃了。
为什么。
#include <iostream>
#include <string>
using namespace std;

class book
{
public:
int num;
float price;
book *next;
};

book *head=NULL;

bool check(string str)
{
int i=0;
for(i=0;i<str.length();i++)
{
if((str[i]<'0'||str[i]>'9')&&(str[i]!='.'))
{
return false;
}
}
return true;
}

book *creat()
{
book *p1,*p2;
p1=new book;
head=p1;
p2=p1;

cout<<"请输入图书编号(以零结束):";
string str;
cin>>str;
while(!check(str))
{
cout<<"请输入图书编号(以零结束):";
cin>>str;
}
p1->num=atoi(str.c_str());

if(p1->num)
{
cout<<"请输入图书价格(以零结束):";
string str;
cin>>str;

你的链表的最后一个的next不是NULL,create函数的问题

book *creat()
{
book *p1,*p2;
p1=new book;
head=p1;
p2=p1;

p1->next=NULL;

cout<<"请输入图书编号(以零结束):";
string str;
cin>>str;
while(!check(str))
{
cout<<"请输入图书编号(以零结束):";
cin>>str;
}
p1->num=atoi(str.c_str());

if(p1->num)
{
cout<<"请输入图书价格(以零结束):";
string str;
cin>>str;
while(!check(str))
{
cout<<"请输入图书价格(以零结束):";
cin>>str;
}
p1->price=atof(str.c_str());
}else
{
delete p1;
p2=0;
head=NULL;
return head;
}
while(p1->num)
{
p2=p1;
p1=new book;

cout<<"请输入图书编号(以零结束):";
string str;
cin>>str;
while(!check(str))
{
cout<<