C语言图书管理系统:利用栈和快速排序实现高效分类
C语言图书管理系统:利用栈和快速排序实现高效分类
这篇文章将介绍一个使用C语言编写的图书管理系统。该系统利用栈和快速排序算法,可以高效地对图书信息进行分类和排序,并将结果保存到文件中。
代码分析
1. 数据结构定义c#include <stdio.h>#include <stdlib.h>#include <string.h>
#define MAX_SIZE 1000
typedef struct { int index; char name[100]; char author[100]; char press[100]; char type[100]; int code; int price;} Book;
typedef struct { Book books[MAX_SIZE]; int top;} Stack;
Book结构体用于存储每本图书的信息,包括索引号、书名、作者、出版社、种类、分类编号和价格。*Stack结构体用于存储相同分类的图书,使用数组实现栈结构,top变量指示栈顶位置。
2. 栈操作函数cvoid push(Stack *stack, Book book) { if (stack->top == MAX_SIZE - 1) { printf('栈已满,无法添加图书!
'); return; } stack->top++; stack->books[stack->top] = book;}
Book pop(Stack *stack) { if (stack->top == -1) { printf('栈为空,无法删除图书! '); Book empty_book = {0, '', '', '', '', 0, 0.0}; return empty_book; } Book book = stack->books[stack->top]; stack->top--; return book;}
push函数用于将一本图书压入指定的栈中。*pop函数用于从指定的栈中弹出一本图书。
3. 快速排序函数cvoid quick_sort(Book *books, int left, int right) { if (left >= right) { return; } int i = left; int j = right; Book pivot = books[left]; while (i < j) { while (i < j && books[j].price >= pivot.price) { j--; } books[i] = books[j]; while (i < j && books[i].price <= pivot.price) { i++; } books[j] = books[i]; } books[i] = pivot; quick_sort(books, left, i - 1); quick_sort(books, i + 1, right);}
quick_sort函数使用递归方式对图书数组按照价格进行快速排序。
4. 主函数cint main() { // ... (省略部分代码)
for (int i = 0; i < 4; i++) { quick_sort(stacks[i].books, 0, stacks[i].top); }
// ... (省略部分代码)}
- 主函数中,首先从 'book_storages.txt' 文件读取图书信息,根据分类编号将图书压入对应的栈中。* 然后对每个栈中的图书进行快速排序。* 最后将排序后的结果输出到控制台和对应的文件中。
总结
这个图书管理系统示例展示了如何使用C语言中的栈和快速排序算法实现图书分类和排序功能。该系统结构清晰,代码简洁易懂,适合作为学习数据结构和算法的案例。
原文地址: https://www.cveoy.top/t/topic/fvP8 著作权归作者所有。请勿转载和采集!