C++ 实现:将链表中最大值节点移至末尾的算法及代码详解
以下是解题思路和 C++ 代码实现: 解题思路: 1. 首先遍历链表,找到数据域值最大的链结点以及其前一个链结点。 2. 如果最大节点不是链表的尾节点,将其从当前位置删除,并插入到链表的末尾。 ```cpp #include <iostream> using namespace std; struct Node { int data; Node* link; Node(int x) : data(x), link(NULL) {} }; // 查找最大节点及其前一个节点 void findMaxAndPrev(Node* list, Node*& maxNode, Node*& prevMax) { Node* curr = list; maxNode = list; prevMax = NULL; Node* prev = NULL; while (curr!= NULL) { if (curr->data > maxNode->data) { maxNode = curr; prevMax = prev; } prev = curr; curr = curr->link; } } // 将最大节点移到链表末尾 void moveMaxToEnd(Node*& list) { Node* maxNode = NULL; Node* prevMax = NULL; findMaxAndPrev(list, maxNode, prevMax); if (maxNode!= NULL && prevMax!= NULL) { prevMax->link = maxNode->link; Node* curr = list; while (curr->link!= NULL) { curr = curr->link; } curr->link = maxNode; maxNode->link = NULL; } } // 打印链表 void printList(Node* list) { Node* curr = list; while (curr!= NULL) { cout << curr->data << " "; curr = curr->link; } cout << endl; } // 构建链表 Node* buildList() { int num; cin >> num; Node* head = NULL; Node* tail = NULL; while (num!= -1) { Node* newNode = new Node(num); if (head == NULL) { head = newNode; tail = newNode; } else { tail->link = newNode; tail = newNode; } cin >> num; } return head; } int main() { Node* list = buildList(); moveMaxToEnd(list); printList(list); return 0; } ``` ######[AI写代码神器 | 583点数解答 | 2024-10-14 22:52:26]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)376
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)252
- 微信收款助手监控程序代码剖析:功能、问题与改进方向(DeepSeek | 282点数解答 | 2025-04-11 00:32:28)221
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)276
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)268
- 地下水及地基土腐蚀性分析:从代码优化到逻辑完善的全面攻略(DeepSeek | 498点数解答 | 2025-06-08 21:49:49)237
- 礼盒多级排序:总价→最贵→最便宜→编号的 Python 实现与详解(阿里通义 | 1000点数解答 | 2026-03-16 12:13:21)30
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)347
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)496
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)381
- Python切片操作巧解经典算法:二维数组90°旋转(阿里通义 | 205点数解答 | 2023-10-31 11:05:29)350
- 揭秘iOS开发:常用算法大集合,提升应用性能与体验!(阿里通义 | 246点数解答 | 2023-11-08 00:43:08)302