高分求助数据结构问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 19:34:47
我基础不好,希望大家能把这个代码的步骤的解释一下
#include<iostream.h>
typedef struct Book {
char name[30];
int price;} Book;
typedef struct LNode
{
Book data;
struct LNode *next;
}
LNode,*LinkList;
void CreatList(LinkList &L){
int i,n;LinkList p;
L=new LNode;
L->next=NULL;
cout<<"请输入要建立的链表的元素个数:";
cin>>n;
for(i=0;i<n;i++){
p=new LNode;
cout<<"请输入第"<<"个元素的数据"<<endl;
cin>>p->data.name>>p->data.price;
p->next=L->next;
L->next=p;}
}
void ListDelete(LinkList &L){
int n,j;LinkList p,q;
j=0;p=L;
cout<<"请输入要删除的数据位置";
cin>>n;
while(p->next&&j<n-1){p=p->next;j++;}
if(!(p->next)||j>n-1) co

1.#include<iostream.h> :引用输入输出流文件

2.typedef struct Book {
char name[30];
int price;} Book;
声明 book结构体

3.typedef struct LNode
{
Book data;
struct LNode *next;
}
声明 LNode,*LinkList两个节点

4.void CreatList(LinkList &L):创建一个链表
这个链表实现的功能是:先输入要存放书的数目,然后输入每本书的内容。
每本书信息存放到一个节点里面(book)。其中LNode存放的本书的信息(book节点)以及下一个大节点(LNode)的地址。

下面几句是精华:
void CreatList(LinkList &L){
int i,n;LinkList p;
L=new LNode;
L->next=NULL;
for(i=0;i<n;i++){
p=new LNode;
cin>>p->data.name>>p->data.price;
p->next=L->next;
L->next=p;}
}

详细注解:

参数L存放的是整个链表的首地址,P存放临时节点信息。
首先,给节点P分配一个地址,来存放输入每一本书的信息(cin>>p->data.name>>p->data.price; )
然后,将之前存放整个链表的信息存放到NEXT当中(p->next=L->next; )
再次,将刚插入的节点以及之前插入的节点信息一起赋值给L(L->next=p);这相当于L每次存放整个链表的首地址。
最后,继续循环执行,直到循环完输入书本