找一个实际场景拿链表/顺序表实现,并用C语言写出完整代码
时间: 2024-10-21 12:08:20 浏览: 19
C语言 数据结构之链表实现代码
链表是一种动态数据结构,非常适合用来存储元素集合并且可以随时添加或删除元素,无需预先知道元素的具体数量。下面是一个简单的实际场景,假设我们需要创建一个图书管理系统,其中包含书籍信息,如书名、作者和ISBN。我们可以使用链表来存储这些书籍。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct BookNode {
char bookTitle[50];
char author[50];
char isbn[13]; // 假设我们只处理13位的ISBN
struct BookNode* next; // 指向下一个节点
} BookNode;
// 创建新节点函数
BookNode* createNewBookNode(char* title, char* author, char* isbn) {
BookNode* newNode = (BookNode*)malloc(sizeof(BookNode));
if (newNode != NULL) {
strcpy(newNode->bookTitle, title);
strcpy(newNode->author, author);
strcpy(newNode->isbn, isbn);
newNode->next = NULL;
}
return newNode;
}
// 添加书籍到链表的函数
void addBookToList(BookNode** head, char* title, char* author, char* isbn) {
BookNode* newNode = createNewBookNode(title, author, isbn);
if (*head == NULL) {
*head = newNode;
} else {
BookNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 遍历链表打印所有书籍信息
void printBooks(BookNode* head) {
BookNode* temp = head;
while (temp != NULL) {
printf("Title: %s\nAuthor: %s\nISBN: %s\n", temp->bookTitle, temp->author, temp->isbn);
temp = temp->next;
}
}
int main() {
// 初始化链表为空
BookNode* head = NULL;
// 添加几本书到链表
addBookToList(&head, "小说A", "作者A", "978-1234567890");
addBookToList(&head, "小说B", "作者B", "978-2345678901");
// 打印链表中的所有书籍
printBooks(head);
return 0;
}
```
在这个例子中,`addBookToList`函数用于添加书籍到链表,`printBooks`函数则遍历链表并打印每个书籍的信息。这个程序实现了基本的链表操作,适合小型图书管理需求。
阅读全文