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