| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:请给指出这个错误是什么意思
只看楼主 加入收藏
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:8 
请给指出这个错误是什么意思
程序代码:
#include<stdio.h>
#include<malloc.h>
#define M 3
#define RailBoxNum 10
typedef struct RNode
{
    int data;
    struct RNode *next;
}RailNode;
RailNode *Hf[M-1],*Hr[M-1],*L2=NULL;//L2为出轨轨道,Hf[M-1],Hr[M-1]是缓冲轨道
//int i;

RailNode *RailCreate()//创建初始车厢号链表
{
    RailNode *p,*s,*u;
    int i,RailNum;
    printf("请输入初始车厢号,最后一个输入零,以作缓冲\n");
    printf("请输入第一个车厢号:\n");
    p=(RailNode *)malloc(sizeof(RailNode));

    scanf("%d",&RailNum);
    p->data=RailNum;
    s=p;
    u=s;
    for(i=1;i<RailBoxNum;i++)//尾插法建立链表
    {
        printf("请输入第%d个车厢号:\n",i+1);
        p=(RailNode *)malloc(sizeof(RailNode));
        scanf("%d",&RailNum);
        p->data=RailNum;
        s->next=p;
        s=p;
    }
    s->next=NULL;
    return u;
}
void RailDisp(RailNode *Rail)//输出车厢号
{
    RailNode *p=Rail;
    while(p!=NULL)
    {
        printf("%3d",p->data);
        p=p->next;
    }
}

RailNode *RailBoxSort(RailNode *Rail)
{
    int R_Count=1,i,flag=0;
    RailNode *p=Rail,*L=Rail,*u=L2;
    for(i=0;i<M-1;i++)
    {
        Hf[i]=Hr[i]=NULL;//缓冲轨道预先置空
    }


    while(R_Count<RailBoxNum)
    {
        Rail=p->next;//指向下一个车厢
        if(p->data==R_Count)//满足条件就直接出轨
        {
            if(L2==NULL)
                u=p;
            else
            {
                u->next=p;
                u=p;
            }
            R_Count++;//计数器加一
            p=Rail;//指向当前头结点
        }
        else//不满足条件,则进入缓冲轨道
        {
            for(i=0;i<M-1;i++)
            {
                flag=0;
                if(Hf[i]==NULL||p->data>Hr[i]->data)
                {
                    if(Hf[i]==NULL)//如果缓冲轨道为空
                    {
                        Hf[i]=p;
                        Hr[i]=p;
                    }
                    else if(Hf[i]!=NULL&&p->data>Hr[i]->data)//如果当前的缓冲轨道最后一个小于当前要入轨的车厢号,那么就入轨
                    {
                        flag=1;
                        Hr[i]->next=p;
                        Hr[i]=p;
                        Hr[i]->next=NULL;
                    }
                    p=Rail;
                }
            }
            if(!flag)
            {
                while(p->data>Hf[0]->data||p->data>Hf[1]->data)
                {
                    for(i=0;i<M-1;i++)
                    {
                        while(Hf[i]!=NULL&&Hf[i]->data==R_Count)
                        {
                            u->next=Hf[i];
                            u=Hf[i];
                            Hf[i]=Hf[i]->next;
                            u->next=NULL;
                            R_Count++;
                        }
                    }
                }
                p=Rail;
            }
        }
    }
    return L;
}        
void main()
{
    RailNode *Rail,*R_ail;
    Rail=RailCreate();//创建链表,结点数据域由车厢号组成
    printf("初始车厢号为:");
    RailDisp(Rail);//输出初始列车编号
    printf("\n");
    R_ail=RailBoxSort(Rail);//进入列车排序
    printf("排序后的车厢号为:");
    RailDisp(R_ail);//输出排序后的结果
    printf("\n");
}
    

Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
这是我断点追踪的结果,追踪结果到(  R_ail=RailBoxSort(Rail);//进入列车排序)部分时就出现这种错误,导致这个函数没法运行,不知道怎么回事?题目要求是用队列知识对火车车厢排序,现在不管是不是能满足要求,就是现在这个函数运行不了,挺纳闷的,运行时麻烦您输入3 6 9 2 4 7 1 8 5 0进行测试,看看哪个地方不对,为什么通不过去呢??谢谢了

[ 本帖最后由 遮天云 于 2010-11-30 21:24 编辑 ]
2010-11-30 21:23
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:36 
在我这运行是死循环

编程的道路上何其孤独!
2010-11-30 21:29
七有新人
Rank: 3Rank: 3
来 自:哈尔滨
等 级:论坛游侠
帖 子:64
专家分:132
注 册:2010-10-12
收藏
得分:30 
太晚了
明天晚上帮你看

图!
不一定是真相!
2010-11-30 21:29
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
谢谢帮忙,不过我运行的是到那个排序函数就不动了,但不跟踪时就是到那不执行了,而不是死循环了
2010-11-30 21:31
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
回复 3楼 七有新人
谢谢。我这边还在整呢
2010-11-30 21:31
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:34 
你想要运行的结果是什么?0~9依次的??
有几个算法看不懂  我慢慢研究吧
2010-11-30 22:26
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
回复 6楼 shafeilong
最后输出应该是1 2 3 4 5 6 7 8 9 那个零是我为了控制不让链表越界的
2010-11-30 22:29
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
自己搞定了,不过我的这个有缺陷,没考虑到排序不成功的情况,如果不成功的话还要添加缓冲轨道,而且我编写此程序的时候只是对这组数据设计算法的,总之我的这个还有很大的改进空间
2010-12-01 09:53
ququguoguo
Rank: 2
等 级:论坛游民
帖 子:73
专家分:90
注 册:2010-10-20
收藏
得分:0 
我是来学习的。。。。。
2010-12-01 13:19
快速回复:请给指出这个错误是什么意思
数据加载中...
 
   



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

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