请给指出这个错误是什么意思
程序代码:#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 编辑 ]









