目录
实验内容来自重庆邮电大学数据结构实验指导书,如有侵权,请联系删除。
1. 基于顺序(链式)存储结构的图书信息表的创建和输出
问题描述
定义一个包含图书信息
(
书号、书名、价格
)
的顺序表(链表),读入相应的图书数据来完成图书信息表的创建。然后,统计图书表中的图书个数,同时逐行输出每本图书的信息。
输入要求
输入
n+1
行,其中前
n
行是
n
本图书的信息
(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(
空格分隔的三个
0)
。其中,书号和书名为字符串类型,价格为浮点数类型。
输出要求
总计
n+1
行,第
1
行是所创建的图书信息表中的图书个数,后
n
行是
n
本图书的信息(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
输入样例
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
2
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811234923
汇编语言程序设计教程
21.00
0 0 0
输出样例
6
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811234923 汇编语言程序设计教程 21.00
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
// 定义图书的结构体, 包含图书的ISBN, 书名, 价格
typedef struct {
char isbn[20]; //图书 ISBN
char name[50]; //图书名字
float price; //图书价格
} Book;
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList 为指向结构体 LNode 的指针类型
// 初始化链表
LinkList init_LinkList() { // L为头指针, 不存放数据, L->next指向头节点。
LinkList L = (LinkList) malloc(sizeof (LNode)); //定义L,L指向结构体LNode,并为其分配内存空间
if (L==NULL) { //L=NULL说明内存分配失败
printf("初始化链表失败,未能成功分配内存!");
exit(0);
}
L->next = NULL;
return L;
}
// 向链表尾部插入数据
void insert_LinkList(LinkList L, Book data) {
LinkList cur = L;
while (cur->next!=NULL) { //当cur->next=NULL时说明cur指向的节点为最后一个节点
cur = cur->next;
}
LinkList temp = (LinkList) malloc(sizeof (LNode)); //新建一个节点指针,cur->next指向该指针,即在cur后面加了一个节点
temp->data = data;
temp->next = NULL;
cur->next = temp;
}
void insert(LinkList L) { //利用上面的insert_LinkList函数插入多条数据
Book data;
while(1) {
scanf("%s %s %f", data.isbn, data.name, &data.price);
if (strcmp(data.isbn, "0")==0 && strcmp(data.name, "0")==0 && data.price==0) {
break;
} else {
insert_LinkList(L, data);
}
}
}
int length(LinkList L) { //获取链表的长度
LinkList cur = L->next; //L->next指向头节点
int len = 0;
while(cur!=NULL) {
len++;
cur = cur->next;
}
return len;
}
void print_LinkList(LinkList L) {
int len = length(L);
printf("%d\n", len);
LinkList cur = L->next; //此时cur指向头节点
while (cur!=NULL) { //如不为空则说明该节点有数据,打印
printf("%s %s %.2f\n", cur->data.isbn, cur->data.name, cur->data.price);
cur = cur->next; //指向下一个节点
}
}
int main() {
LinkList L = init_LinkList();
insert(L);
print_LinkList(L);
free(L);
return 1;
}
2.基于顺序(链式)存储结构的图书信息表的修改
问题描述
首先,定义一个包含图书信息
(
书号、书名、价格
)
的顺序表(链表),读入相应的图书数据完成图信息表的创建。然后,计算所有图书的平均价格,将所有低于平均价格的图书价格提高 20%
,所有高于或等于平均价格的图书价格提高10%。最后,逐行输出价格修改后的图书信息。
输入要求
输入
n+1
行,其中前
n
行是
n
本图书的信息
(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(
空格分隔的三个
0)
。其中,书号和书名为字符串类型,价格为浮点数类型。
输出要求
3
总计
n+2
行
,
第
1
行是修改前所有图书的平均价格,第
2
行是所创建的图书信息表中的图书个数,后 n
行是价格修改后
n
本图书的信息
(
书号、书名、价格
)
、每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
输入样例
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811234923
汇编语言程序设计教程
21.00
0 0 0
输出样例
25.50
6
9787302257646
程序设计基础
30.00
9787302164340
程序设计基础
(
第
2
版
) 24.00
9787302219972
单片机技术及应用
35.20
9787302203513
单片机原理与应用技术
28.60
9787810827430
工业计算机控制技术
--
原理与应用
31.90
9787811234923
汇编语言程序设计教程
25.20
加入average_price()和change_price()两个函数
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
// 定义图书的结构体, 包含图书的ISBN, 书名, 价格
typedef struct {
char isbn[20]; //图书 ISBN
char name[50]; //图书名字
float price; //图书价格
} Book;
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList 为指向结构体 LNode 的指针类型
// 初始化链表
LinkList init_LinkList() { // L为头指针, 不存放数据, L->next指向头节点。
LinkList L = (LinkList) malloc(sizeof (LNode)); //定义L,L指向结构体LNode,并为其分配内存空间
if (L==NULL) { //L=NULL说明内存分配失败
printf("初始化链表失败,未能成功分配内存!");
exit(0);
}
L->next = NULL;
return L;
}
// 向链表尾部插入数据
void insert_LinkList(LinkList L, Book data) {
LinkList cur = L;
while (cur->next!=NULL) { //当cur->next=NULL时说明cur指向的节点为最后一个节点
cur = cur->next;
}
LinkList temp = (LinkList) malloc(sizeof (LNode)); //新建一个节点指针,cur->next指向该指针,即在cur后面加了一个节点
temp->data = data;
temp->next = NULL;
cur->next = temp;
}
void insert(LinkList L) { //利用上面的insert_LinkList函数插入多条数据
Book data;
while(1) {
scanf("%s %s %f", data.isbn, data.name, &data.price);
if (strcmp(data.isbn, "0")==0 && strcmp(data.name, "0")==0 && data.price==0) {
break;
} else {
insert_LinkList(L, data);
}
}
}
int length(LinkList L) { //获取链表的长度
LinkList cur = L->next; //L->next指向头节点
int len = 0;
while(cur!=NULL) {
len++;
cur = cur->next;
}
return len;
}
void print_LinkList(LinkList L) {
int len = length(L);
printf("%d\n", len);
LinkList cur = L->next; //此时cur指向头节点
while (cur!=NULL) { //如不为空则说明该节点有数据,打印
printf("%s %s %.2f\n", cur->data.isbn, cur->data.name, cur->data.price);
cur = cur->next; //指向下一个节点
}
}
float average_price(LinkList L) { //获取平均价格
float avg_price = 0;
float total_price = 0;
int length = 0;
LinkList cur = L->next;
while (cur!=NULL) {
total_price += cur->data.price;
length ++;
cur = cur->next;
}
avg_price = total_price / (float)length;
printf("%.2f\n", avg_price);
return avg_price;
}
void change_price(LinkList L) {
LinkList cur = L->next;
float avg_price = average_price(L);
while(cur!=NULL) {
if (cur->data.price < avg_price) {
cur->data.price *= 1+(float)0.2;
} else {
cur->data.price *= 1+(float)0.1;
}
cur = cur->next;
}
}
int main() {
LinkList L = init_LinkList();
insert(L);
change_price(L);
print_LinkList(L);
free(L);
return 1;
}
3.基于顺序(链式)存储结构的图书信息表的最贵图书的查找
问题描述
定义一个包含图书信息
(
书号、书名、价格
)
的顺序表(链表),读入相应的图书数据来完成图书信息表的创建。然后,查找价格最高的图书,输出相应图书的信息。
输入要求
输入
n+1
行,其中前
n
行是
n
本图书的信息
(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(
空格分隔的三个
0)
。其中,书号和书名为字符串类型,价格为浮点数类型。
输出要求
总计输出
m+1
行,其中,第
1
行是最贵图书的数目
m(
价格最高的图书可能有多本)
。后
m
行是最贵图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
输入样例
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811230710 C#
程序设计易懂易会教程
32.00
0 0 0
输出样例
2
9787302219972
单片机技术及应用
32.00
9787811230710 C#
程序设计易懂易会教程
32.00
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
// 定义图书的结构体, 包含图书的ISBN, 书名, 价格
typedef struct {
char isbn[20]; //图书 ISBN
char name[50]; //图书名字
float price; //图书价格
} Book;
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList 为指向结构体 LNode 的指针类型
// 初始化链表
LinkList init_LinkList() { // L为头指针, 不存放数据, L->next指向头节点。
LinkList L = (LinkList) malloc(sizeof (LNode)); //定义L,L指向结构体LNode,并为其分配内存空间
if (L==NULL) { //L=NULL说明内存分配失败
printf("初始化链表失败,未能成功分配内存!");
exit(0);
}
L->next = NULL;
return L;
}
// 向链表尾部插入数据
void insert_LinkList(LinkList L, Book data) {
LinkList cur = L;
while (cur->next!=NULL) { //当cur->next=NULL时说明cur指向的节点为最后一个节点
cur = cur->next;
}
LinkList temp = (LinkList) malloc(sizeof (LNode)); //新建一个节点指针,cur->next指向该指针,即在cur后面加了一个节点
temp->data = data;
temp->next = NULL;
cur->next = temp;
}
void insert(LinkList L) { //利用上面的insert_LinkList函数插入多条数据
Book data;
while(1) {
scanf("%s %s %f", data.isbn, data.name, &data.price);
if (strcmp(data.isbn, "0")==0 && strcmp(data.name, "0")==0 && data.price==0) {
break;
} else {
insert_LinkList(L, data);
}
}
}
void most_expensive(LinkList L) {
float price = 0;
int num = 0; //记录最贵图书的数量
LinkList cur = L->next;
while (cur!=NULL) {
if (price < cur->data.price) {
price = cur->data.price;
num = 1;
} else if (price == cur->data.price) {
num ++;
}
cur = cur->next;
}
printf("%d\n", num);
cur = L->next;
while (cur!=NULL) {
if (price == cur->data.price) {
printf("%s %s %.2f\n", cur->data.isbn, cur->data.name, cur->data.price);
}
cur = cur->next;
}
}
int main() {
LinkList L = init_LinkList();
insert(L);
most_expensive(L);
free(L);
return 1;
}
4.基于顺序(链式)存储结构的图书信息表的新图书的入库
问题描述
首先,定义一个包含图书信息
(
书号、书名、价格
)
的顺序表(链表),读入相应的图书数据来完成图书信息表的创建。然后,根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置上。最后,输出新图书入库后所有图书的信息。
输入要求
输入
n+3
行,其中前
n
行是
n
本图书的信息
(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。第 n+1
行是图书输入结束标志:0 0 0(
空格分隔的三个
0)
。其中,书号和书名为字符串类型,价格为浮点数类型。之后输入第 n+2
行,内容仅为一个整数,代表待入库的新图书的位置序号。最后,输入第 n+3
行,内容为新图书的信息,书号、书名、价格用空格分隔。
输出要求
若插入成功:
输出新图书入库后所有图书的信息
(
书号、书名、价格
)
,总计
n+2
行,第
1 行是入库后的图书数目,后 n+1
行每行是一本图书的信息,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
若插入失败
:
只输出以下提示
:
抱歉,入库位置非法
!
输入样例
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机制技术原理与应用
29.00
9787811234923
汇编语言程序设计教程
21.00
0 0 0
2
9787302265436
计算机导论实验指导
18.00
输出样例
7
9787302257646
程序设计基础
25.00
9787302265436
计算机导论实验指导
18.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811234923
汇编语言程序设计教程
21.00
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
// 定义图书的结构体, 包含图书的ISBN, 书名, 价格
typedef struct {
char isbn[20]; //图书 ISBN
char name[50]; //图书名字
float price; //图书价格
} Book;
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList 为指向结构体 LNode 的指针类型
// 初始化链表
LinkList init_LinkList() { // L为头指针, 不存放数据, L->next指向头节点。
LinkList L = (LinkList) malloc(sizeof (LNode)); //定义L,L指向结构体LNode,并为其分配内存空间
if (L==NULL) { //L=NULL说明内存分配失败
printf("初始化链表失败,未能成功分配内存!");
exit(0);
}
L->next = NULL;
return L;
}
// 向链表尾部插入数据
void insert_LinkList(LinkList L, Book data) {
LinkList cur = L;
while (cur->next!=NULL) { //当cur->next=NULL时说明cur指向的节点为最后一个节点
cur = cur->next;
}
LinkList temp = (LinkList) malloc(sizeof (LNode)); //新建一个节点指针,cur->next指向该指针,即在cur后面加了一个节点
temp->data = data;
temp->next = NULL;
cur->next = temp;
}
void insert(LinkList L) { //利用上面的insert_LinkList函数插入多条数据
Book data;
while(1) {
scanf("%s %s %f", data.isbn, data.name, &data.price);
if (strcmp(data.isbn, "0")==0 && strcmp(data.name, "0")==0 && data.price==0) {
break;
} else {
insert_LinkList(L, data);
}
}
}
int length(LinkList L) { //获取链表的长度
LinkList cur = L->next;
int len = 0;
while(cur!=NULL) {
len++;
cur = cur->next;
}
return len;
}
void print_LinkList(LinkList L) {
int len = length(L);
printf("%d\n", len);
LinkList cur = L->next; //此时cur指向头节点
while (cur!=NULL) { //如不为空则说明该节点有数据,打印
printf("%s %s %.2f\n", cur->data.isbn, cur->data.name, cur->data.price);
cur = cur->next; //指向下一个节点
}
}
void insert_pos(LinkList L, int pos, Book data) {
LinkList cur = L;
int position = 1;
while (1) {
if (pos == position) {
break;
}
cur = cur->next;
position ++;
}
LinkList temp = (LinkList) malloc(sizeof (LNode));
temp->data = data;
temp->next = cur->next;
cur->next = temp;
}
int main() {
LinkList L = init_LinkList();
insert(L);
int position;
Book data;
scanf("%d", &position);
scanf("%s %s %f", data.isbn, data.name, &data.price);
insert_pos(L, position, data);
print_LinkList(L);
free(L);
return 1;
}
5.基于顺序(链式)存储结构的图书信息表的旧图书的出库
问题描述
定义一个包含图书信息
(
书号、书名、价格
)
的顺序表(链表),读入相应的图书数据来完成图书信息表的创建。然后根据指定的待出库的旧图书的位置,将该图书从图书表中删除。最后输出该图书出库后的所有图书的信息。
输入要求
输入
n+2
行,其中前
n
行是
n
本图书的信息
(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。第 n+1
行是图书输入结束标志:0 0 0(
空格分隔的三个
0)
。其中,书号和书名为字符串类型,价格为浮点数类型。然后,输入第 n+2
行,内容仅为一个整数,代表待删除的旧图书的位置序号。
输出要求
若删除成功:
输出旧图书出库后所有图书的信息
(
书号、书名、价格
)
,总计
n
行,第
1
行是出库后的图书数目,后 n-1
行是一本图书的信息,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
若删除失败:
7
只输出以下提示
:
抱歉,出库位置非法
!
输入样例
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811234923
汇编语言程序设计教程
21.00
0 0 0
2
输出样例
5
9787302257646
程序设计基础
25.00
9787302219972
单片机技术及应用
32.00
9787302203513
单片机原理与应用技术
26.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787811234923
汇编语言程序设计教程
21.00
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
// 定义图书的结构体, 包含图书的ISBN, 书名, 价格
typedef struct {
char isbn[20]; //图书 ISBN
char name[50]; //图书名字
float price; //图书价格
} Book;
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList 为指向结构体 LNode 的指针类型
// 初始化链表
LinkList init_LinkList() { // L为头指针, 不存放数据, L->next指向头节点。
LinkList L = (LinkList) malloc(sizeof (LNode)); //定义L,L指向结构体LNode,并为其分配内存空间
if (L==NULL) { //L=NULL说明内存分配失败
printf("初始化链表失败,未能成功分配内存!");
exit(0);
}
L->next = NULL;
return L;
}
// 向链表尾部插入数据
void insert_LinkList(LinkList L, Book data) {
LinkList cur = L;
while (cur->next!=NULL) { //当cur->next=NULL时说明cur指向的节点为最后一个节点
cur = cur->next;
}
LinkList temp = (LinkList) malloc(sizeof (LNode)); //新建一个节点指针,cur->next指向该指针,即在cur后面加了一个节点
temp->data = data;
temp->next = NULL;
cur->next = temp;
}
void insert(LinkList L) { //利用上面的insert_LinkList函数插入多条数据
Book data;
while(1) {
scanf("%s %s %f", data.isbn, data.name, &data.price);
if (strcmp(data.isbn, "0")==0 && strcmp(data.name, "0")==0 && data.price==0) {
break;
} else {
insert_LinkList(L, data);
}
}
}
int length(LinkList L) { //获取链表的长度
LinkList cur = L->next;
int len = 0;
while(cur!=NULL) {
len++;
cur = cur->next;
}
return len;
}
void print_LinkList(LinkList L) {
int len = length(L);
printf("%d\n", len);
LinkList cur = L->next; //此时cur指向头节点
while (cur!=NULL) { //如不为空则说明该节点有数据,打印
printf("%s %s %.2f\n", cur->data.isbn, cur->data.name, cur->data.price);
cur = cur->next; //指向下一个节点
}
}
void delete_pos(LinkList L, int pos) {
LinkList cur = L;
int position = 1;
while (1) {
if (pos == position) {
break;
}
cur = cur->next;
position ++;
}
LinkList temp;
temp = cur->next;
cur->next = temp->next;
}
int main() {
LinkList L = init_LinkList();
insert(L);
int position;
scanf("%d", &position);
delete_pos(L, position);
print_LinkList(L);
free(L);
return 1;
}
6.基于顺序(链式)存储结构的图书信息表的图书去重(选做)
问题描述
出版社出版的任何一本图书的书号
(ISBN)
都是唯一的,即图书表中不允许包含书号重复的图书。定义一个包含图书信息(
书号、书名、价格
)
的顺序表(链表),读入相应的图书数据来完成图书信息表的创建(
书号可能重复
)
。然后进行图书的去重,即删除书号重复的图书(
只保留第一本
)
。最后输出去重后所有图书的信息。
输入要求
输入
n+1
行,其中前
n
行是
n
本图书的信息
(
书号、书名、价格
)
,每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志
:0 0 0(
空格分隔的三个
0)
。其中,书号和书名为字符串类型,价格为浮点数类型。
输出要求
总计输出
m+1
行
(m≤n)
,其中,第
1
行是去重后的图书数目。后
m
行是去重后图书的信息(书号、书名、价格)
,每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
输入样例
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787302257646
程序设计基础
25.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
9787302219972
单片机技术及应用
32.00
0 0 0
输出样例
4
9787302257646
程序设计基础
25.00
9787302164340
程序设计基础
(
第
2
版
) 20.00
9787302219972
单片机技术及应用
32.00
9787810827430
工业计算机控制技术
--
原理与应用
29.00
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
// 定义图书的结构体, 包含图书的ISBN, 书名, 价格
typedef struct {
char isbn[20]; //图书 ISBN
char name[50]; //图书名字
float price; //图书价格
} Book;
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList 为指向结构体 LNode 的指针类型
// 初始化链表
LinkList init_LinkList() { // L为头指针, 不存放数据, L->next指向头节点。
LinkList L = (LinkList) malloc(sizeof (LNode)); //定义L,L指向结构体LNode,并为其分配内存空间
if (L==NULL) { //L=NULL说明内存分配失败
printf("初始化链表失败,未能成功分配内存!");
exit(0);
}
L->next = NULL;
return L;
}
// 向链表尾部插入数据
void insert_LinkList(LinkList L, Book data) {
LinkList cur = L;
while (cur->next!=NULL) { //当cur->next=NULL时说明cur指向的节点为最后一个节点
cur = cur->next;
if (strcmp(cur->data.isbn, data.isbn)==0) { //为了完成第6个实验,在插入数据时判断是否有相同isbn的图书,有的话就不插入该数据
return;
}
}
LinkList temp = (LinkList) malloc(sizeof (LNode)); //新建一个节点指针,cur->next指向该指针,即在cur后面加了一个节点
temp->data = data;
temp->next = NULL;
cur->next = temp;
}
void insert(LinkList L) { //利用上面的insert_LinkList函数插入多条数据
Book data;
while(1) {
scanf("%s %s %f", data.isbn, data.name, &data.price);
if (strcmp(data.isbn, "0")==0 && strcmp(data.name, "0")==0 && data.price==0) {
break;
} else {
insert_LinkList(L, data);
}
}
}
int length(LinkList L) { //获取链表的长度
LinkList cur = L->next;
int len = 0;
while(cur!=NULL) {
len++;
cur = cur->next;
}
return len;
}
void print_LinkList(LinkList L) {
int len = length(L);
printf("%d\n", len);
LinkList cur = L->next; //此时cur指向头节点
while (cur!=NULL) { //如不为空则说明该节点有数据,打印
printf("%s %s %.2f\n", cur->data.isbn, cur->data.name, cur->data.price);
cur = cur->next; //指向下一个节点
}
}
int main() {
LinkList L = init_LinkList();
insert(L);
print_LinkList(L);
free(L);
return 1;
}