用C语言基于顺序存储结构的图书信息表的逆序存储 定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后将读入的图书信息逆序存储,逐行输出逆序存储后每本图书的信息。
时间: 2024-05-02 14:22:18 浏览: 103
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 定义最大表长
typedef struct {
char id[10]; // 书号
char name[20]; // 书名
float price; // 价格
} Book;
typedef struct {
Book data[MAX_SIZE];
int length; // 当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *L)
{
L->length = 0;
}
// 向顺序表中插入图书信息
void Insert(SeqList *L, Book b)
{
if (L->length >= MAX_SIZE) {
printf("Error: the list is full!\n");
return;
}
L->data[L->length] = b;
L->length++;
}
// 逆序存储顺序表
void ReverseList(SeqList *L)
{
int i;
Book temp;
for (i = 0; i < L->length / 2; i++) {
temp = L->data[i];
L->data[i] = L->data[L->length - i - 1];
L->data[L->length - i - 1] = temp;
}
}
// 输出顺序表中的图书信息
void PrintList(SeqList L)
{
int i;
printf("id\tname\tprice\n");
for (i = 0; i < L.length; i++) {
printf("%s\t%s\t%.2f\n", L.data[i].id, L.data[i].name, L.data[i].price);
}
}
int main()
{
SeqList L;
InitList(&L);
Book b;
char id[10], name[20];
float price;
int i, n;
printf("请输入书的数量:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d本书的书号、书名和价格:", i + 1);
scanf("%s%s%f", id, name, &price);
strcpy(b.id, id);
strcpy(b.name, name);
b.price = price;
Insert(&L, b);
}
ReverseList(&L);
printf("逆序存储后的图书信息表:\n");
PrintList(L);
return 0;
}
```
阅读全文