C++单链表插入排序实战:5个整数,从大到小!

这篇文章将带你使用C++实现一个单链表,并将输入的5个无序整数,通过插入排序法,从大到小排列在链表中。

**代码如下:**cpp#include using namespace std;

// 定义单链表节点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;}

代码解析:

  1. 定义ListNode结构体: 表示单链表的节点,包含数据域 val 和指针域 next。2. insertNode函数: 将新节点插入到链表中,并保持链表从大到小的顺序。3. printList函数: 遍历链表并打印每个节点的值。4. main函数: - 创建一个空的单链表 a。 - 从键盘读取5个整数。 - 调用 insertNode 函数将每个整数插入到链表 a 中。 - 调用 printList 函数打印排序后的链表。 - 释放链表内存,防止内存泄漏。

希望这段代码和解析能够帮助你理解如何在 C++ 中实现单链表的插入排序!


原文地址: https://www.cveoy.top/t/topic/UXT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录