c++高手来 连表问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 13:55:09
#include "iostream.h"
class book
{
public:
int num;
float price;
book *next;
};
book *create()
{
book *p1,*p2,*head;
p1=new book;
p2=p1;
head=p1;
cout<<"请输入书的编号:以0为结束标记"<<endl;
cin>>p1->num;
if(p1->num!=0)
{
cout<<"请输入书的价格:"<<endl;
cin>>p1->price;
}
else
{
delete p1;p2=NULL;p2->next=NULL;head=NULL;return head;
}
while(p1->num!=0)
{
p2=p1; //问题在这里,这个为什么还要p2=p1上面不是有吗?
p1=new book;
cout<<"请输入书的编号:以0为结束标记"<<endl;
cin>>p1->num;
if(p1->num!=0)
{
cout<<"请输入书的价格:"<<endl;
cin>>p1->price;
}
p2->next=p1;
}
delete p1;p2->next=NULL;return head;

}

void showbook(book*head)
{
cout<&

#include "iostream.h"
class book
{
public:
int num;
float price;
book *next;
};
book *create()
{
book *p1,*p2,*head;
p1=new book;
//p2=p1; //你要知道这里的p2=p1的意思是p2指向p1,因为p1刚刚创建的了一个对象,
//其实在这里怕p2指向不指向p1,并不重要,关键是在while循环里面需要,这样才能保证链表p2->Next指向新的p1,
//这里注释掉,程序一样可以运行。

head=p1; //接着把head指针又指向p1

cout<<"请输入书的编号:以0为结束标记"<<endl;
cin>>p1->num;
if(p1->num!=0)
{
cout<<"请输入书的价格:"<<endl;
cin>>p1->price;
}
else
{
delete p1;p2=NULL;p2->next=NULL;head=NULL;return head;
}

//在这里是一个循环
while(p1->num!=0)
{
p2=p1; //问题在这里,这个为什么还要p2=p1上面不是有吗? , 这里的p2=p1是指p2前进了1位,因为p1指针需要改变,
//所以p2的指针又要指向它,这样才能保证在循环中整个链不会断。
p1=new book;
cout<<"请输入书的编号:以0为结束标记"<<endl;
cin>>p1->num;
if(p1->num!=0