链队列的实现出错?求改

来源:百度知道 编辑:UC知道 时间:2024/06/25 00:13:40
总是出现错误?具体在出队列和求长度的地方,求改,谢谢
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

//============链队列存储结构==============
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;

//入队列
void EnQueue(LinkQueue *Q,int e)
{
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
p->data = e;
p->next = NULL;

//Q->rear->next=p;//???????????
Q->rear = p;
printf("入队成功!");
}

//出队列
void DeQueue(LinkQueue *Q,int *e)
{
if(Q->front->next==Q->rear)
{
Q->rear=Q->front;
return 0;
}
if(Q->front==Q->rear)
return 1;
QueuePtr p=Q->front->next;
*e=p->data;
p=p->next->next

#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

//============链队列存储结构==============
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;

//入队列
void EnQueue(LinkQueue *Q,int e)
{
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
p->data = e;
p->next = NULL;

Q->rear->next=p;//这里有疑问?是对的
Q->rear = p;
printf("入队成功!");
}

//出队列
void DeQueue(LinkQueue *Q,int *e)
{
if(Q->front->next==Q->rear)//这里表明有队列有元素,为什么要单独搞个if?
{
Q->rear=Q->front;
return 0;//定义的void型,为什么有返回值?
}
if(Q->front==Q->rear)
return 1;
QueuePtr p=Q->front->next;
*e=p->data;
p=p->nex