1025 反转链表 ,提交没有AC,单独测试倒是可以

 //PAT1025V1
#include <stdio.h>

int main(){
    double i;
    int n,j,m=0,k,t;
    scanf("%lf %d %d",&i,&n,&k);    //i是首地址,是排序的关键 
    struct ChainTable{
        double add;
        int value;
        double NextAdd;
    }NodeInf[n],SortNode[n];
    for(j=0;j<n;j++){
        scanf("%lf %d %lf",&NodeInf[j].add,&NodeInf[j].value,&NodeInf[j].NextAdd);
    }

    //sort  原节点NodeInf[]排列之后为SortNode[] 
    j=0;
    while(j!=6){
        for(m=0;m<n;m++){
            if(NodeInf[m].add==i){
                if(NodeInf[m].NextAdd!=-1){
                    SortNode[j].add=NodeInf[m].add;
                    SortNode[j].value=NodeInf[m].value;
                    SortNode[j].NextAdd=NodeInf[m].NextAdd;
//                  printf("\n%05d %d %05d",NodeInf[m].add,NodeInf[m].value,NodeInf[m].NextAdd);    //0的位数补全方法 
                }   
                else{
                    SortNode[j].add=NodeInf[m].add;
                    SortNode[j].value=NodeInf[m].value;
                    SortNode[j].NextAdd=NodeInf[m].NextAdd;
//                  printf("\n%05d %d %d",NodeInf[m].add,NodeInf[m].value,NodeInf[m].NextAdd);
                }   
                i=NodeInf[m].NextAdd;
                j++;
            //  break;
            }
        }   
    } 
/*  
    for(m=0;m<n;m++){
        if(SortNode[m].NextAdd!=-1){
            printf("\n%05d %d %05d",SortNode[m].add,SortNode[m].value,SortNode[m].NextAdd); //0的位数补全方法 
        }   
        else{
            printf("\n%05d %d %d",SortNode[m].add,SortNode[m].value,SortNode[m].NextAdd);
       }    
    }
    printf("\n\n");
*/  
    //reverse
    //first step:divide 分段
    int d=n/k,y=n%(int)(k);     //分成d段,段内反转;剩余y个 
//  printf("%d %d",d,y);

    //second step:reverse in the section loop
    if(y!=0){   //分段之后有剩余 
        for(j=1;j<=d;j++){  //每段进行reverse 
            for(m=j*k-1;m>=(j-1)*k;m--){    //逆序输出 
                if(j<=d-1){     //倒数第二段(包含)之前的处理办法 
                    if(m>(j-1)*k)   // 倒数第二段之前的分段中倒数第二个元素(包含)之前的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m-1].add); //0的位数补全方法
                    else    // 倒数第二段之前的分段中最后一个元素的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m+1+k].add);   //0的位数补全方法
                }
                else{   //最后一段的处理办法 
                    if(m>(j-1)*k)   // 最后一段的分段中倒数第二个元素(包含)之前的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m-1].add); //0的位数补全方法
                    else    // 最后一段的分段中最后一个元素的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m+k].add); //0的位数补全方法
                }            
            }
        } 
        for(t=d*k;t<n;t++){ //分段剩余部分直接输出 
            if(SortNode[t].NextAdd!=-1) 
                printf("\n%05.0lf %d %05.0lf",SortNode[t].add,SortNode[t].value,SortNode[t].NextAdd);   //0的位数补全方法 
            else 
                printf("\n%05.0lf %d -1",SortNode[t].add,SortNode[t].value);
        }

    } 
    if(y==0){   //分段之后无剩余 
        for(j=1;j<=d;j++){  //每段进行reverse 
            for(m=j*k-1;m>=(j-1)*k;m--){    //逆序输出 
                if(j<=d-1){     //倒数第二段(包含)之前的处理办法 
                    if(m>(j-1)*k)   // 倒数第二段之前的分段中倒数第二个元素(包含)之前的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m-1].add); //0的位数补全方法
                    else    // 倒数第二段之前的分段中最后一个元素的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m+1+k].add);   //0的位数补全方法
                }
                else{   //最后一段的处理办法 
                    if(m>(j-1)*k)   // 最后一段的分段中倒数第二个元素(包含)之前的处理办法
                        printf("\n%05.0lf %d %05.0lf",SortNode[m].add,SortNode[m].value,SortNode[m-1].add); //0的位数补全方法
                    else    // 最后一段的分段中最后一个元素的处理办法
                        printf("\n%05.0lf %d -1",SortNode[m].add,SortNode[m].value);    //0的位数补全方法    
                }            
            }
        }   
    }   
}

图片说明

把第一个while()中的j!=6改为j!=n

测试数据:

00001 4 1
00001 1 00002
00002 2 00003
00003 3 00004
00004 4 -1

你的输出是

00001 1 00003
00002 2 00004
00003 3 -92559631349317830736831783200707727132248687965119994463780864
00004 4 -1

你看能不能根据这个测试数据找出一些问题,
next其实不用管,排序好之后,每一个的next就是下一个的地址