首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于直接排序有关问题,大神~

2013-01-08 
关于直接排序问题,求助大神~~~~为什么我这段代码,InsertSort()排序后除最后一个r[6].t值是对的以外,其他r[

关于直接排序问题,求助大神~~~~
为什么我这段代码,InsertSort()排序后除最后一个r[6].t值是对的以外,其他r[].t都都变成0了?
struct RedType
{
        char name;
        int t;
};

RedType r[7];                           //这个地方我在主函数中已经给r【1】~r【6】赋好值了
strcpy(r[0].name,"zzz");
r[0].t=0;                              //r[0]用作监视哨未赋值


void InsertSort(RedType r[])           //直接插入排序
{
        int i,j;
        for(i=2;i<=6;++i)
                if((r[i].t)<(r[i-1].t))
                {
                        r[0]=r[i];
                        r[i]=r[i-1];
                        for(j=i-2;((r[0].t)<(r[j].t));--j)
                                r[j+1]=r[j];
                        r[j+1]=r[0];
                }
}
[解决办法]
结构休变量可以直接赋值吗?i am not sure
[解决办法]
1、从你写的程序中可以看出你定义结构体有问题,应该是字符数组或指针类型。
2、

for(j=i-2; r[0].t < r[j].t; --j)
改为
for(j=i-1; r[0].t < r[j].t; --j)

[解决办法]
char name;

strcpy(r[0].name,"zzz");
字符串怎么能赋值给一个字符呢,这里溢出了
[解决办法]
引用:
结构休变量可以直接赋值吗?i am not sure


可以
[解决办法]
The only legal operations on a structure are copying it or assigning to it as a unit, taking its address with &, and accessing its members.
[解决办法]
可以试下这个看看对不对 我没运行 应该可以
void InsertSort(RedType R[])           

        Int I, j;
For(I = 2; I <= n; i++)
If(R[i].key < R[i-1].key){
R[0] = R[1];
For(j = I – 1; R[0].key < R[j].key; j--)
R[j+1] = R[j];


R[j+1] = R[0];
  }
}

热点排行