注册 登录
编程论坛 数据结构与算法

静态链表法排序

wu550399048 发布于 2012-12-11 23:16, 342 次点击
#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 编辑 ]
0 回复
1