救急呀~~~我的优先级队列问题
我这个程序可以输出队列,可是最后会提示NULL pointer assignment谁能帮我看看呀,谢谢各位啦~~~~
#include "stdio.h"
typedef struct QNODE /*定义*/
{
int data;
int pri;
struct QNODE *next;
}QNODE,*queueptr;
typedef struct
{
queueptr front;
}linkqueue;
queueptr p[5]; /*P[5]为5个入口指针*/
void initqueue (linkqueue *q) /*建立PQ,申请5个插入点,输出队列时,跳过PRI为0的节点,*/
{
int i;
q->front=(queueptr)malloc(sizeof(QNODE));
if (!q->front) printf ("overflow\n");
for (i=1;i<=5;i++)
{
p[i]=(queueptr)malloc(sizeof(QNODE));
p[i]->pri=0;
p[i]->data=10;
}
q->front->next=p[5];
for (i=5;i>1;i--)
p[i]->next=p[i-1];
p[1]->next=NULL;
printf ("建表成功\n");
}
int outqueue (linkqueue *q) /*取队头元素*/
{
int e;
queueptr r;
r=q->front->next;
while (r->pri==0)
r=r->next;
e=r->data;
q->front->next=r->next;
free(r);
return (e);
}
void inqueue (int i,int e) /*插入优先级为I,值为E的元素从5个入口入队,入队后,入口指针指向新加入节点*/
{
queueptr r;
r=(queueptr)malloc(sizeof(QNODE));
r->data=e;
r->pri=i;
r->next=p[i]->next;
p[i]->next=r;
p[i]=r;
}
void main()
{
int e;
int data,pri;
int i=0;
linkqueue *a;
initqueue (a);
printf ("enter the data and the PRI\n");
while(1)
{
scanf("%d%d",&data,&pri);
if (data==0)
break;
inqueue (pri,data);
i++;
}
while (i!=0)
{
e=outqueue (a);
printf ("%d ",e);
i--;
}
printf("\n");
}