64,685
社区成员
发帖
与我相关
我的任务
分享
#include<stdlib.h>
#include<stdio.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status
typedef struct _QNode{
int data;
struct _QNode * next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;//队列头指针
QueuePtr rear;//队列尾指针
}LinkQueue;
Status InitQueue(LinkQueue &Q)
{//建立一个空队列
Q.front=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
Q.rear=Q.front;
return OK;
}
Status ClearQueue(LinkQueue &Q)
{
QueuePtr s;
while(Q.front->next->next)
{
Q.front->next=Q.front->next->next;
free(Q.front);
}
free(Q.front->next);
Q.front->next=NULL;
Q.rear=Q.front;
//free(Q.front->next);
return OK;
}
Status ClearQueue(LinkQueue &Q)
{
QueuePtr s;
while(Q.front!=Q.rear)
{
s=Q.front;
Q.front=Q.front->next;
free(s);
}
return OK;
}
while(Q.front->next->next)
{
Q.front->next=Q.front->next->next;
free(Q.front); //这里都把Q.front给释放了,那下次循环的时候,Q.front->next->next去哪找啊????
}