顺序表的基本操作图书馆
时间: 2023-12-07 15:38:55 浏览: 106
以下是顺序表在图书馆管理系统中的基本操作:
1.初始化顺序表
```c
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int book_id; // 书籍编号
char book_name[50]; // 书籍名称
char author[20]; // 作者
char publisher[30]; // 出版社
int publish_year; // 出版年份
} Book; // 定义书籍结构体
typedef struct {
Book elem[MAXSIZE]; // 存储书籍的数组
int length; // 当前存储的书籍数量
} SqList; // 定义顺序表结构体
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
```
2.插入元素
```c
// 在顺序表L的第i个位置插入新元素e
Status ListInsert(SqList *L, int i, Book e) {
if (i < 1 || i > L->length + 1) { // 判断i的范围是否有效
return ERROR;
}
if (L->length >= MAXSIZE) { // 判断顺序表是否已满
return ERROR;
}
for (int j = L->length; j >= i; j--) { // 将第i个位置及之后的元素后移
L->elem[j] = L->elem[j - 1];
}
L->elem[i - 1] = e; // 将新元素e插入到第i个位置
L->length++; // 顺序表长度加1
return OK;
}
```
3.删除元素
```c
// 删除顺序表L中第i个位置的元素,并用e返回其值
Status ListDelete(SqList *L, int i, Book *e) {
if (i < 1 || i > L->length) { // 判断i的范围是否有效
return ERROR;
}
*e = L->elem[i - 1]; // 将被删除的元素赋值给e
for (int j = i; j < L->length; j++) { // 将第i个位置之后的元素前移
L->elem[j - 1] = L->elem[j];
}
L->length--; // 顺序表长度减1
return OK;
}
```
阅读全文