用C语言1.初始化一个空的顺序表; 2.把“1”导入顺序表,读出顺序表中图书总数,并输出所有图书信息; 3.删除第i(1<=i<=图书总数)本图书,并输出被删除的图书信息,输出删除第本图书后顺序表中剩余的图书信息。
时间: 2024-01-22 10:17:42 浏览: 82
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int id; // 图书编号
char name[30]; // 图书名称
float price; // 图书价格
} Book;
typedef struct {
Book data[MAXSIZE]; // 存储顺序表中的数据元素
int length; // 顺序表的当前长度
} SqList;
// 初始化一个空的顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 向顺序表中添加一本图书
void AddBook(SqList *L) {
Book book;
printf("请输入图书编号:");
scanf("%d", &book.id);
printf("请输入图书名称:");
scanf("%s", book.name);
printf("请输入图书价格:");
scanf("%f", &book.price);
L->data[L->length++] = book;
}
// 输出所有图书信息
void PrintList(SqList L) {
printf("图书总数:%d\n", L.length);
printf("编号\t名称\t价格\n");
for (int i = 0; i < L.length; i++) {
printf("%d\t%s\t%.2f\n", L.data[i].id, L.data[i].name, L.data[i].price);
}
}
// 删除第i本图书
void DeleteBook(SqList *L, int i) {
if (i < 1 || i > L->length) {
printf("删除位置不合法!\n");
return;
}
printf("删除的图书信息:\n");
printf("%d\t%s\t%.2f\n", L->data[i-1].id, L->data[i-1].name, L->data[i-1].price);
for (int j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
}
int main() {
SqList L;
InitList(&L);
AddBook(&L);
PrintList(L);
int i;
printf("请输入要删除的图书位置:");
scanf("%d", &i);
DeleteBook(&L, i);
PrintList(L);
return 0;
}
```
注意,此代码中只实现了删除第i本图书的功能,如果需要实现删除指定图书名称或图书编号的功能,需要在删除函数中添加额外的参数,并进行相应的修改。
阅读全文