图书管理系统数据结构链表c
时间: 2023-07-08 09:50:08 浏览: 92
图书管理系统可以使用链表来存储图书信息。链表是一种动态数据结构,可以在程序运行过程中动态添加或删除元素。在图书管理系统中,可以使用单向链表或双向链表来存储图书信息,每个节点表示一本图书,包括图书编号、图书名称、作者、出版社、价格等字段。
下面是C语言中单向链表的例子:
```
struct Book {
int id; // 图书编号
char name[50]; // 图书名称
char author[50]; // 作者
char publisher[50]; // 出版社
float price; // 价格
struct Book* next; // 指向下一个节点的指针
};
struct Book* head = NULL; // 链表头指针
// 添加图书
void addBook(int id, char* name, char* author, char* publisher, float price) {
struct Book* newBook = (struct Book*)malloc(sizeof(struct Book));
newBook->id = id;
strcpy(newBook->name, name);
strcpy(newBook->author, author);
strcpy(newBook->publisher, publisher);
newBook->price = price;
newBook->next = NULL;
if (head == NULL) {
head = newBook;
} else {
struct Book* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newBook;
}
}
// 删除图书
void deleteBook(int id) {
if (head == NULL) {
return;
}
if (head->id == id) {
struct Book* p = head;
head = head->next;
free(p);
return;
}
struct Book* p = head;
while (p->next != NULL) {
if (p->next->id == id) {
struct Book* q = p->next;
p->next = q->next;
free(q);
return;
}
p = p->next;
}
}
// 修改图书信息
void updateBook(int id, char* name, char* author, char* publisher, float price) {
struct Book* p = head;
while (p != NULL) {
if (p->id == id) {
strcpy(p->name, name);
strcpy(p->author, author);
strcpy(p->publisher, publisher);
p->price = price;
return;
}
p = p->next;
}
}
// 查询图书信息
struct Book* findBook(int id) {
struct Book* p = head;
while (p != NULL) {
if (p->id == id) {
return p;
}
p = p->next;
}
return NULL;
}
```
这个例子中,每个节点包含图书的信息和指向下一个节点的指针。添加、删除、修改和查询图书信息的操作都可以通过遍历链表来实现。
阅读全文