| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 599 人关注过本帖
标题:链表相邻元素排序问题,程序能跑,但结果出错,对于一个指定链表排序时,经 ...
只看楼主 加入收藏
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
链表相邻元素排序问题,程序能跑,但结果出错,对于一个指定链表排序时,经过排序只能得到首元素和最小元素,不知道哪里出了问题,请知道的教授一下
程序代码:
typedef struct Queue_H
{
    int X;
    Queue_H* next;
}Queue_H;

程序代码:
Queue_H* Q_Que(Queue_H *head)
{
    Queue_H *p=head;
    do
    {
        if((p->X)<(p->next->X))
        {
            Queue_H* temp1,*temp2,*temp3;
            temp1=p;
            temp2=p->next;
            temp3=p->next->next;
            p=temp2;
            p->next=temp1;
            p->next->next=temp3;
        }
        p=p->next;
    }while(p!=NULL);
    return head;
}


[此贴子已经被作者于2015-11-25 11:57编辑过]

搜索更多相关主题的帖子: 元素 
2015-11-25 11:55
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:15 
//以下代码已测试
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Queue
{
    int x;
    Queue*next;
};
void Swap(int &a,int &b)
{
    int temp;temp=a;a=b;b=temp;
}
void Descend(Queue*h)//引入头指针
{
    Queue*last;last=NULL;
    Queue*p;
    do
    {
       p=h;
       while(p->next!=last)
       {
             if(p->x<p->next->x)
               Swap(p->x,p->next->x);
            p=p->next;
       }
       last=p;
    }while(h->next!=last);   
}
Queue*head;
int main()
{
    cout<<"请输入整数存入链表,以-10000结束输入。\n";
    int get;
    Queue*p_new;Queue*p;p=head;
    while(true)
    {
        cin>>get;
        if(get==-10000) break;
        else
        {
            p_new=new Queue;
            p_new->x=get;p_new->next=NULL;
            if(p==NULL)
            {
                p=p_new;head=p;
            }
            else
            {
                p->next=p_new;p=p->next;
            }
        }
    };
    cout<<"原始顺序:\n";
    p=head;
    while(p!=NULL)
    {
        cout<<p->x<<endl;p=p->next;
    }
    p=head;
    cout<<"新顺序:\n";
    Descend(head);
    while(p!=NULL)
    {
        cout<<p->x<<endl;p=p->next;
    }
    system("pause");
    return 0;
}
//代码有点长,只看Descend函数就行了,Swap是将两数置换,其他都只是输入
2015-11-26 20:46
快速回复:链表相邻元素排序问题,程序能跑,但结果出错,对于一个指定链表排序时 ...
数据加载中...
 
   



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

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