定义一个包含图书信息(书号,书名,价格)的顺序表,使其具有如下功能: 1. 建立 2. 输入 3. 取值 4. 查找 5. 插入 6. 删除 7. 输出
时间: 2024-03-25 14:41:17 浏览: 20
好的,根据上述的结构体定义,一个包含图书信息的顺序表可以定义为:
```
#define MAX_SIZE 100 // 定义顺序表的最大长度
struct Book {
int book_id; // 书号
char book_name[50]; // 书名
float price; // 价格
};
struct BookList {
struct Book books[MAX_SIZE]; // 存储图书信息的数组
int length; // 当前存储的图书数量
};
```
下面是包含图书信息的顺序表的各个操作的实现:
1. 建立
```
void createBookList(struct BookList *list) {
list->length = 0;
}
```
2. 输入
```
void inputBookList(struct BookList *list) {
printf("请输入图书数量:");
scanf("%d", &list->length);
for(int i = 0; i < list->length; i++) {
printf("请输入第 %d 本书的书号、书名和价格:", i+1);
scanf("%d %s %f", &list->books[i].book_id, list->books[i].book_name, &list->books[i].price);
}
}
```
3. 取值
```
struct Book getBook(struct BookList list, int index) {
if(index < 0 || index >= list.length) {
printf("索引错误\n");
exit(1); // 终止程序
}
return list.books[index];
}
```
4. 查找
```
int searchBook(struct BookList list, int book_id) {
for(int i = 0; i < list.length; i++) {
if(list.books[i].book_id == book_id) {
return i; // 返回找到的图书的索引
}
}
return -1; // 没有找到
}
```
5. 插入
```
void insertBook(struct BookList *list, int index, struct Book book) {
if(index < 0 || index > list->length) {
printf("索引错误\n");
exit(1); // 终止程序
}
if(list->length == MAX_SIZE) {
printf("顺序表已满,无法插入\n");
exit(1); // 终止程序
}
for(int i = list->length - 1; i >= index; i--) {
list->books[i+1] = list->books[i];
}
list->books[index] = book;
list->length++;
}
```
6. 删除
```
void deleteBook(struct BookList *list, int index) {
if(index < 0 || index >= list->length) {
printf("索引错误\n");
exit(1); // 终止程序
}
for(int i = index; i < list->length - 1; i++) {
list->books[i] = list->books[i+1];
}
list->length--;
}
```
7. 输出
```
void outputBookList(struct BookList list) {
printf("图书列表:\n");
for(int i = 0; i < list.length; i++) {
printf("书号:%d,书名:%s,价格:%.2f\n", list.books[i].book_id, list.books[i].book_name, list.books[i].price);
}
}
```
这些操作可以组合起来,实现对包含图书信息的顺序表的完整操作。