C实现定义一个包含图书信息(书号、书名、价格)的单链表,读入相应的图书数据来完成图书信息表的创建。然后,统计图书表中的图书个数,同时逐行输出每本书的信息。
时间: 2024-05-05 18:15:12 浏览: 153
以下是一个简单的C语言程序,实现了定义一个包含图书信息的单链表,并读入相应的数据来创建图书信息表,统计图书个数,并逐行输出每本书的信息。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义图书信息结构体
typedef struct Book {
int id; // 书号
char name[20]; // 书名
float price; // 价格
struct Book *next; // 单链表指针域
} Book;
int main() {
Book *head = NULL; // 定义链表头指针
Book *p, *q; // 定义链表节点指针
int count = 0; // 定义图书数量变量
// 循环读入图书信息,输入-1结束
while (1) {
int id;
char name[20];
float price;
printf("请输入书号,书名,价格(输入-1结束):\n");
scanf("%d", &id);
if (id == -1) {
break;
}
scanf("%s%f", name, &price);
// 创建新节点并赋值
p = (Book*)malloc(sizeof(Book));
p->id = id;
strcpy(p->name, name);
p->price = price;
// 将新节点加入链表
if (head == NULL) {
head = p;
} else {
q->next = p;
}
q = p;
count++; // 统计图书数量
}
// 输出图书数量
printf("图书数量:%d\n", count);
// 遍历链表并输出每本书的信息
printf("图书信息表:\n");
p = head;
while (p != NULL) {
printf("%d %s %.2f\n", p->id, p->name, p->price);
p = p->next;
}
// 释放链表内存
p = head;
while (p != NULL) {
q = p->next;
free(p);
p = q;
}
return 0;
}
```
运行程序时,会提示输入图书信息,输入-1结束。输入完毕后,程序会统计图书数量,并逐行输出每本书的信息。最后,程序会释放链表内存。
例如,输入以下数据:
```
请输入书号,书名,价格(输入-1结束):
1001 C语言程序设计 35.50
请输入书号,书名,价格(输入-1结束):
1002 数据结构 45.00
请输入书号,书名,价格(输入-1结束):
1003 计算机网络 55.50
请输入书号,书名,价格(输入-1结束):
-1
```
则程序会输出:
```
图书数量:3
图书信息表:
1001 C语言程序设计 35.50
1002 数据结构 45.00
1003 计算机网络 55.50
```
阅读全文