栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【2023王道数据结构】【排序】通过C++实现插入排序(单链表插入排序)C、C++完整实现(可直接运行)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【2023王道数据结构】【排序】通过C++实现插入排序(单链表插入排序)C、C++完整实现(可直接运行)

~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌


✌ 题目及题解持续更新中
【2023王道数据结构目录】课后算法设计题C、C++代码实现完整版大全


题目: 通过C++实现插入排序(单链表插入排序)

运行截图:

代码实现:

#include 
#include 
using namespace std;

typedef struct LNode
{
    int data;
    struct LNode *next;
    int length = 0;
} LNode, *LinkList;

// 尾插法
void TailInsert(LinkList &L)
{
    int val = 0;
    LNode *r = L;
    while (cin >> val)
    {
        LNode *s = new LNode;
        s->data = val;
        r->next = s;
        r = s;
        r->next = NULL;
        L->length++;

        if (cin.get() == 'n')
        {
            break;
        }
    }
}

// 遍历输出链表元素
void Print(LinkList L)
{
    LNode *p = L->next;
    while (p)
    {
        cout << p->data << 't';
        p = p->next;
    }
    cout << endl;
}

void Insert_Sort(LinkList &L)
{
    

    LNode *cur, *pre, *p, *r; // 定义指针变量,分别指向待插入、找到待插入前驱、工作指针、排好序尾指针
    r = L->next;              // 将尾指针指向第一个元素,默认第一个元素已经排好序
    cur = L->next->next;      // 从第二个元素开始

    // 只要待插入不为空,没到表尾
    while (cur)
    {
        pre = L, p = L->next; // 分别指向头指针、首元

        // 只有当前值小于尾指针的值进行
        if (cur->data < r->data)
        {
            // p位置为大于cur的位置,pre是其前驱,待插入元素插入在p和pre之间
            while (p != NULL && p != cur && p->data <= cur->data)
            {
                pre = p;
                p = p->next;
            }

            // 有序表尾指针链接待插入元素后面指针
            r->next = cur->next;
            // 将cur插入到pre和p之间
            cur->next = p;
            pre->next = cur;
            // 指针后移
            cur = p->next;
            r = p;
        }

        // 如果大于,直接将尾指针和当前指针后移一位
        else
        {
            r = cur;
            cur = cur->next;
        }
    }
}

int main()
{
    LinkList L = new LNode;
    TailInsert(L);
    cout << "排序前:" << endl;
    Print(L);
    Insert_Sort(L);
    cout << "排序后:" << endl;
    Print(L);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号