为什么这个程序会runtime error?
#include "stdio.h"#include "stdlib.h"
struct heigh
{
char name[35];
int a;
int heigh;
struct heigh *next;
struct heigh *prev;
};
int comp(const void *a,const void *b)
{
return (*(struct heigh **)a)->a-(*(struct heigh **)b)->a;
}
int main()
{
struct heigh **queue,*temp;
int total,i,j;
scanf("%d",&total);
queue=(struct heigh**)calloc(total,sizeof(struct heigh*));
for(i=0;i<total;i++)
queue[i]=(struct heigh*)malloc(sizeof(struct heigh));
for(i=0;i<total;i++)
scanf("%s%d",queue[i]->name,&queue[i]->a);
qsort(queue,total,sizeof(struct heigh *),comp);
for(i=0;i<total;i++)
if(queue[i]->a>i)
break;
if(i<total)
printf("-1");
else
{
queue[0]->heigh=3001;
queue[0]->next=queue[0]->prev=NULL;
for(i=1;i<total;i++)
{
temp=queue[i-1];
j=queue[i]->a-temp->a;
for(;j>0;j--,temp=temp->prev);//寻找合适位置
queue[i]->heigh=temp->heigh;
queue[i]->next=temp->next;//关系重组
if(temp->next!=NULL)
temp->next->prev=queue[i];
temp->next=queue[i];
queue[i]->prev=temp;
for(;temp!=NULL;temp=temp->prev)//前面减小
temp->heigh--;
}
for(i=0;i<total;i++)
printf("%s %d\n",queue[i]->name,queue[i]->heigh);
}
return 0;
}
输入是total行,每行一个名字一个数值,我把出错的那一个输入手动测试了一下,发现没有问题,但是OJ就告诉我runtime error……有时也会遇上这种事,本机正常但是ojruntime error,查都查不出来,有没有经验可以让我参考一下?