需要实现一个图书信息管理系统,其中图书表被抽象成一个线性表,每个元素包含ISBN、书名和定价。以下是使用C语言实现的单链表的基本操作,包括建表、输出、查找、插入和删除功能的代码示例:
时间: 2024-10-29 15:11:43 浏览: 20
基于线性表的图书管理系统 源代码 顺序表&链表
在C语言中,我们可以使用结构体(struct)来定义一个表示图书的节点,并利用单链表的数据结构来实现图书信息管理系统的部分功能。首先,我们需要创建一个名为`BookNode`的结构体,存储`ISBN`、`title`和`price`:
```c
typedef struct {
char ISBN[15]; // 假设ISBN最多15位字符
char title[100];
float price;
struct BookNode* next; // 指向下一个节点的指针
} BookNode;
```
接下来,我们定义一些基本操作的函数:
1. **初始化链表** (Create Table):
```c
void createTable(BookNode** head) {
*head = NULL;
}
```
2. **输出链表** (Output):
```c
void displayList(BookNode* head) {
BookNode* current = head;
while (current != NULL) {
printf("ISBN: %s, Title: %s, Price: %.2f\n", current->ISBN, current->title, current->price);
current = current->next;
}
}
```
3. **查找特定图书** (Search):
```c
BookNode* searchByISBN(BookNode* head, const char* isbn) {
BookNode* current = head;
while (current != NULL && strcmp(current->ISBN, isbn) != 0) {
current = current->next;
}
return current;
}
```
4. **插入新书** (Insert):
```c
void insertBook(BookNode** head, const char* isbn, const char* title, float price) {
BookNode* newNode = (BookNode*) malloc(sizeof(BookNode));
strcpy(newNode->ISBN, isbn);
strcpy(newNode->title, title);
newNode->price = price;
newNode->next = *head;
*head = newNode;
}
```
5. **删除图书** (Delete):
```c
void deleteBook(BookNode** head, const char* isbn) {
if (*head == NULL) return;
if(strcmp((*head)->ISBN, isbn) == 0) {
BookNode* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
BookNode* current = *head;
while (current->next != NULL && strcmp(current->next->ISBN, isbn) != 0) {
current = current->next;
}
if(current->next != NULL) {
BookNode* temp = current->next;
current->next = temp->next;
free(temp);
}
}
```
以上就是使用C语言实现图书信息管理系统的简单链表操作。注意,这仅实现了单方面的操作,实际系统可能还需要添加更多的功能,如更新价格、排序等。
阅读全文