在C语言本关任务:定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。
时间: 2024-09-27 17:11:16 浏览: 71
C语言图书管理系统 链表实现 功能齐全(书籍信息以及用户信息保存在附带的txt文件中)
5星 · 资源好评率100%
在C语言中,你可以定义一个结构体`Book`来表示图书信息,包括书号、书名和价格。接着,你可以使用链表的数据结构来存储这个结构体的实例。以下是一个简单的步骤说明:
1. 定义结构体Book:
```c
typedef struct Book {
int bookID;
char title[100];
float price;
struct Book* next; // 指向下一个Book节点的指针
} Book;
```
2. 创建链表头节点,并初始化它为NULL:
```c
Book* listHead = NULL;
```
3. 编写函数来输入图书信息并添加到链表中:
```c
void addBook(Book** head, int ID, const char* title, float price) {
Book* newNode = (Book*)malloc(sizeof(Book));
newNode->bookID = ID;
strcpy(newNode->title, title);
newNode->price = price;
newNode->next = *head;
*head = newNode;
}
```
4. 用于统计图书总数的函数:
```c
int countBooks(Book* head) {
int count = 0;
Book* current = head;
while (current != NULL) {
count++;
current = current->next;
}
return count;
}
```
5. 输出图书信息的函数遍历链表并打印信息:
```c
void printBooks(Book* head) {
Book* current = head;
while (current != NULL) {
printf("书号:%d,书名:%s,价格:%.2f\n", current->bookID, current->title, current->price);
current = current->next;
}
}
```
6. 主程序部分,调用上述函数完成操作:
```c
int main() {
int numBooks;
printf("请输入图书数量:");
scanf("%d", &numBooks);
for (int i = 0; i < numBooks; i++) {
int ID, price;
char title[100];
printf("请输入第%d本书的书号、书名和价格:\n", i + 1);
scanf("%d %s %f", &ID, title, &price);
addBook(&listHead, ID, title, price);
}
printf("图书总数:%d\n", countBooks(listHead));
printBooks(listHead);
return 0;
}
```
记得处理可能出现的用户输入错误和内存管理异常。运行时,请按照提示输入图书信息。
阅读全文