例2.8 已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后。

1.题目

例2.8已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后。

2.算法分析

3.代码

//顺序调整
void changeList(LinkList L){
    int temp;
    /* pre为前一节点, pa为后一节点 */
    Node *pa = L->next, *pre;
    temp = pa->num;
    while (pa->next){
        if (pa->next->num < temp){
            /* 移动节点 */
            pre = pa;
            pa = pa->next;
            pre->next = pa->next;
            /* 头插法 */
            pa->next = L->next;
            L->next = pa;
            /* 将pa的位置重置 */
            pa = pre;
        }
        /* 不做处理,向后推进 */
        else pa = pa->next;
    }
}
posted @   DawnTraveler  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示