C语言图书管理系统:三种插入方法详解

需积分: 0 1 下载量 98 浏览量 更新于2024-08-02 收藏 93KB DOC 举报
本资源是一份关于C语言编写的图书管理系统程序,主要介绍了三种不同的图书插入方法:前插法、尾插法以及中间插法。这个程序设计旨在实现图书的动态管理,通过定义一个`book`类来存储图书的信息,包括书名编号(`num`)和价格(`price`),以及指向下一个图书记录的指针`next`。系统的核心功能是`insert`函数,分别处理图书在链表头部、尾部以及保持有序情况下的插入操作。 **1. 前插法(Insertion at the beginning)** 前插法在函数`void insert(book* head, int num, float price)`中实现,它首先创建一个新的`book`对象,然后设置其属性,接着将新节点的`next`指针指向当前链表的头部,并更新链表头指针。这种方法适用于需要在已排序列表的开始处插入的情况。 **2. 尾插法(Insertion at the end)** 尾插法的`void insert(book* head, int num, float price)`通过遍历链表找到末尾节点后进行插入。首先,从头节点开始遍历,直到`head->next`为空,将新节点设置为`head`的下一个节点,然后更新新节点、当前节点和尾节点的指针。当输入的编号大于当前节点的编号时,将新节点插入到`head`的后面,否则插入到当前节点的后面,最后确保`list->next`被设为`NULL`以完成插入。 **3. 中间插法(Insertion at a specific position)** 中间插法根据书名编号的大小关系,在已排序的链表中找到正确的位置插入。该函数首先检查新书编号是否小于等于当前节点的编号,如果是,则直接插入到头部;否则,遍历链表找到合适的位置,如果`num`大于当前节点的编号且`head->next`不为空,就插入到`head->next`之后;否则,如果`num`大于当前节点但小于`head`的下一个节点,就在它们之间插入。 **4. 主程序与辅助函数** 主程序包含头文件`iostream`和`string`,使用了`std`命名空间。`book`类定义了类成员变量和构造函数。`check`函数用于验证输入的字符串是否只包含数字和小数点,确保书名编号的合法性。`creat`函数用于初始化链表,创建并返回头节点。 这个C语言图书管理系统提供了实用的数据结构操作,展示了如何通过链表实现图书的增删改查功能。学习者可以通过这个示例深入了解如何在C语言中处理链表,以及如何根据实际需求调整插入算法。