标题:静态链表法排序
只看楼主
wu550399048
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-25
结帖率:100%
 问题点数:0 回复次数:0 
静态链表法排序
#include<iostream.h>
class node{
public:
    int data;
    int intex;
    node(){}
    node(int d){
        data=d;
        intex=0;
    }
};

class list{
private:
    int*s;
    int msize;
public:
    list(int size){
        msize=size;
        s=new int[msize];
    }
    void sort(node a[],int);
    void output(node a[],int);
};
void list::sort(node a[],int n){
    int i;int m;
    a[0].intex=1;
    a[1].intex=0;
    int k;
   
    for(i=2;i<=n;i++){
        k=a[0].intex;
        if(a[i].data<a[k].data){
            a[0].intex=i;
            a[i].intex=k;
        }
        else {k=a[0].intex;
            while(a[k].intex!=0){
                m=a[k].intex;
                a[k].intex=i;
                a[i].intex=m;
                k=a[k].intex;
            }
            a[k].intex=0;

            //for(i=a[k].intex;a[k].intex!=0&&a[i].data>=a[k].intex;k=a[k].intex){
                //a[k].intex=i;
                //a[i].intex=0;
            //}
        }
    }

}
void list::output(node a[],int n){
    int k=a[0].intex;
    for(int i=0;i<n;i++)
        cout<<i<<'\t';
    cout<<endl;
    for(i=0;i<n;i++)
        cout<<a[i].data<<'\t';
    cout<<endl;
    for(i=0;i<n;i++){
        cout<<a[i].intex<<'\t';
        k=a[k].intex;}
   
}

void main(){
    list l(3);
    node a[5]={0,5,6,3,1};
    l.sort(a,4);
    l.output(a,5);
}

输入啊【5】={5,4,3,2,1}输出结果正确。
但是输入a[5]={0,5,6,3,1}错误
正确结果应该是
0  1  2  3  4  
0  5  6  3  1
4  2  0  1  3
但出来的结果是
0  1  2  3  4  
0  5  6  3  1
4  0  0  1  3
当a[i].data>=a[k].intex时的程序出错了
帮忙看一下

[ 本帖最后由 wu550399048 于 2012-12-11 23:29 编辑 ]
搜索更多相关主题的帖子: void intex private include public 
2012-12-11 23:16



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




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

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