C++单链表实现:插入排序,从大到小!
C++单链表插入排序实战:5个整数,从大到小!
这篇文章将带你使用C++实现一个单链表,并将输入的5个无序整数,通过插入排序法,从大到小排列在链表中。
**代码如下:**cpp#include
// 定义单链表节点struct ListNode { int val; ListNode* next;
ListNode(int value) : val(value), next(nullptr) {}};
// 插入节点到单链表 a,并保持从大到小排序ListNode* insertNode(ListNode* head, int value) { ListNode* newNode = new ListNode(value); if (head == nullptr || value >= head->val) { newNode->next = head; return newNode; } ListNode* cur = head; while (cur->next != nullptr && cur->next->val > value) { cur = cur->next; } newNode->next = cur->next; cur->next = newNode; return head;}
// 打印单链表void printList(ListNode* head) { ListNode* cur = head; while (cur != nullptr) { cout << cur->val << ' '; cur = cur->next; } cout << endl;}
int main() { ListNode* a = nullptr; cout << '请输入 5 个无序整数,用空格分隔:' << endl; for (int i = 0; i < 5; i++) { int num; cin >> num; a = insertNode(a, num); } cout << '排序后的单链表 a 为:'; printList(a); // 释放单链表内存 ListNode* cur = a; while (cur != nullptr) { ListNode* temp = cur; cur = cur->next; delete temp; } return 0;}
代码解析:
- 定义ListNode结构体: 表示单链表的节点,包含数据域
val和指针域next。2. insertNode函数: 将新节点插入到链表中,并保持链表从大到小的顺序。3. printList函数: 遍历链表并打印每个节点的值。4. main函数: - 创建一个空的单链表a。 - 从键盘读取5个整数。 - 调用insertNode函数将每个整数插入到链表a中。 - 调用printList函数打印排序后的链表。 - 释放链表内存,防止内存泄漏。
希望这段代码和解析能够帮助你理解如何在 C++ 中实现单链表的插入排序!
原文地址: https://www.cveoy.top/t/topic/UXT 著作权归作者所有。请勿转载和采集!