Dev-C++实现:图书链表创建与指定位置图书信息查找全解析
下面是一段在 Dev-C++ 中实现包含书籍信息的链表的完整代码。该代码用于读入图书数据并根据指定的最佳位置查找相应的图书,最终输出图书的相关信息。 ```cpp #include <iostream> #include <iomanip> #include <cstring> using namespace std; // 定义图书信息结构体 struct Book { char id[30]; // 书号 char title[100]; // 书名 float price; // 价格 Book *next; // 指向下一个节点的指针 }; // 创建链表的头指针 Book *head = nullptr; // 添加图书到链表 void addBook(const char *id, const char *title, float price) { Book *newBook = new Book; strcpy(newBook->id, id); strcpy(newBook->title, title); newBook->price = price; newBook->next = nullptr; if (head == nullptr) { head = newBook; } else { Book *current = head; while (current->next != nullptr) { current = current->next; } current->next = newBook; } } // 查找指定位置的图书 Book* findBookByPosition(int position) { Book *current = head; int index = 1; // 从1开始计数 while (current != nullptr && index < position) { current = current->next; index++; } return current; } int main() { int n, m; // 输入图书数量 cin >> n; cin.ignore(); // 处理掉换行符 // 输入图书信息 for (int i = 0; i < n; i++) { char id[30], title[100]; float price; cin >> id >> title >> price; // 读入书号、书名和价格 addBook(id, title, price); cin.ignore(); // 处理掉换行符 } // 输入查找次数 cin >> m; // 查找每次指定位置的图书 for (int i = 0; i < m; i++) { int position; cin >> position; Book *foundBook = findBookByPosition(position); if (foundBook != nullptr) { // 查找成功 cout << foundBook->id << " " << foundBook->title << " " << fixed << setprecision(2) << foundBook->price << endl; } else { // 查找失败 cout << "抱歉,指定位置上的图书不存在!" << endl; } } // 清理链表内存 while (head != nullptr) { Book *temp = head; head = head->next; delete temp; } return 0; } ``` 说明 1. 结构体定义: `Book` 是一个结构体,用于存储书号、书名、价格和指向下一个书籍节点的指针。 2. 添加图书: `addBook` 函数将新的图书信息添加到链表的末尾。 3. 查找图书: `findBookByPosition` 函数根据给定的位置查找图书。 4. 主函数: - 首先读取总图书数量并输入每本图书的信息。 - 然后读取要查找的位置,并输出相应图书的信息,格式化价格为两位小数。 5. 内存管理: 在程序结束前清理链表以释放内存。 使用示例 输入和输出示例在代码中已注释,用户可以根据需求输入数据进行测试。 ######[AI写代码神器 | 1823点数解答 | 2024-12-18 09:04:51]
- 数轴旅行:从原点出发,能否到达目标位置?(字节豆包 | 225点数解答 | 2026-01-23 19:51:03)45
- Java:抽象类 Vehicle 及子类 Car、MotorBike 实战演示(讯飞星火 | 440点数解答 | 2024-06-06 23:18:54)310
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)355
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)367
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- C++实现顺序存储结构基本操作:初始化、插入、删除等全解析(GPT | 1743点数解答 | 2024-09-26 00:20:17)281
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)357
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)348
- Java 创建 HTTP POST 请求实现文件上传:代码示例与注意要点 (字节豆包 | 300点数解答 | 2024-12-06 16:07:20)337
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)260
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)274
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)305