标题:动态链表插入排序如何插入了表尾
只看楼主
braveboy2008
Rank: 1
等 级:新手上路
威 望:1
帖 子:21
专家分:0
注 册:2008-10-14
 问题点数:0 回复次数:0 
动态链表插入排序如何插入了表尾
//作业的排序

SeQueue& SeQueue::order()
{
    JCB *t, *p, *pre, *old;

    old = front->next;  //将原链表头结点的下一个结点作为新结点
    front->next = NULL; //截断旧头结点作为新链表头结点
    
    while (old != NULL)     //原表不为空时进行排序
    {
        t = old;            //取原表头结点
        old = old->next;     //指向原表下一个结点
        p = front;         //新表移动指针
        pre = front;       //保存移动时的前驱

        while (t->length >= p->length && p != NULL) //进行比较
        {
            pre = p;
            p = p->next;
        }

        if (p == NULL)    //插入到表尾     
        {
            pre->next = t;
            t->next = NULL;            
        }
        else
        {
            if (p == pre)        //插入到表头
            {
                t->next = p;
                front = t;
            }
            else                //插入到表中间
            {
                pre->next = t;
                t->next = p;
            }
        }

    return *this;
}

请大家分析一下当插入到表尾时有什么问题
搜索更多相关主题的帖子: 链表 动态 
2008-10-18 23:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-239109-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.119080 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved