基于顺序存储结构和链式存储结构的图书信息表的创建和输出,定义一个包含图书信息(书号书名价格)的顺序表和链式表,读入相应的图书数据来完成图书信息表的创建。然后,统计图书表中的图书个数,同时逐行输出每本书的信息
时间: 2024-09-13 13:11:36 浏览: 133
在计算机科学中,顺序存储结构和链式存储结构是两种基本的数据存储方式。顺序存储结构通常使用数组来实现,元素在内存中连续存放;而链式存储结构则通过节点之间的指针链接来存储数据,元素的物理位置可以是离散的。
为了创建一个包含图书信息(书号、书名、价格)的顺序表和链式表,我们可以定义以下的数据结构:
顺序表(数组实现):
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 100
typedef struct {
int id;
char title[50];
float price;
} Book;
Book bookArray[MAX_BOOKS];
int bookCount = 0; // 用于记录当前图书的数量
void addBookToArray(int id, const char* title, float price) {
if (bookCount < MAX_BOOKS) {
bookArray[bookCount].id = id;
strcpy(bookArray[bookCount].title, title);
bookArray[bookCount].price = price;
bookCount++;
}
}
void printBooks() {
printf("图书信息表:\n");
for (int i = 0; i < bookCount; i++) {
printf("书号:%d, 书名:%s, 价格:%.2f\n", bookArray[i].id, bookArray[i].title, bookArray[i].price);
}
}
int main() {
// 示例:添加图书信息到顺序表
addBookToArray(1, "C语言程序设计", 59.9);
addBookToArray(2, "数据结构与算法", 49.9);
// 打印所有图书信息
printBooks();
return 0;
}
```
链式表:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct BookNode {
int id;
char title[50];
float price;
struct BookNode* next;
} BookNode, *BookList;
BookList createBookList() {
return NULL;
}
void addBookToList(BookList* list, int id, const char* title, float price) {
BookNode* newNode = (BookNode*)malloc(sizeof(BookNode));
newNode->id = id;
strcpy(newNode->title, title);
newNode->price = price;
newNode->next = *list;
*list = newNode;
}
void printBookList(BookList list) {
printf("图书信息表:\n");
BookNode* current = list;
while (current != NULL) {
printf("书号:%d, 书名:%s, 价格:%.2f\n", current->id, current->title, current->price);
current = current->next;
}
}
void freeBookList(BookList list) {
BookNode* current = list;
while (current != NULL) {
BookNode* temp = current;
current = current->next;
free(temp);
}
}
int main() {
BookList list = createBookList();
// 示例:添加图书信息到链式表
addBookToList(&list, 1, "C语言程序设计", 59.9);
addBookToList(&list, 2, "数据结构与算法", 49.9);
// 打印所有图书信息
printBookList(list);
// 释放链表内存
freeBookList(list);
return 0;
}
```
在这两个示例中,我们创建了两个函数`addBookToArray`和`addBookToList`来向顺序表和链式表中添加图书信息。然后,我们定义了`printBooks`和`printBookList`来输出图书信息表中的所有图书信息。最后,在主函数`main`中,我们添加了两本图书作为示例,并调用打印函数来展示结果。
阅读全文