一个简单的队列,编译出错,求大神指导啊~~
一个简单的队列,实现入队,出队,销毁队列等操作,编译没问题可就是运行不了啊,求指导啊啊!!!代码如下:#include<stdio.h>
#include<stdlib.h>
//初始化队列 ,出队,入队,销毁队列
typedef char ElemType;
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void init_Queue(LinkQueue *q)
{
q->front=(QueuePtr) malloc ( sizeof(QNode) );
if(!q->front)
exit(0);
q->front->next=NULL;
}
void EnQueue(LinkQueue *q,ElemType e)
{
QueuePtr p;
p=(QueuePtr) malloc ( sizeof(QNode) );
if(!p)exit(0);
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
void DeQueue(LinkQueue *q,ElemType *e) //出队要考虑三种情况(1)队列为空(2)队列只有一个元素
{ // 这时需要修改尾指针(3)队列有多于1个的元素
QueuePtr p;
if(q->front==q->rear)//情况(1)
return ;
p=q->front->next;
*e=p->data;
q->front->next=p->next;
if(q->rear==p) //情况(3)
q->rear=q->front;
free(p);
}
void DestroyQueue(LinkQueue *q)
{
while(q->front)
{
q->rear=q->front->next;
free(q->front);
q->front=q->rear;
}
}
int main()
{
char c;
LinkQueue *q;
init_Queue(q);
while(scanf("%c",&c)&&c!='@')
{
EnQueue(q,c);
}
while(q->front!=q->rear)
{
DeQueue(q,&c);
putchar(c);
}
putchar('\n');
return 0;
}