发布网友 发布时间:2024-10-24 17:32
共1个回答
热心网友 时间:2024-11-07 03:16
#include <iostream>
using namespace std;
typedef int QElemType;
typedef struct QNode { // 结点构造类型
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct { // 队首、队尾指针定义
QueuePtr front;
QueuePtr rear;
}LinkQueue;
bool InitQueue(LinkQueue Q) { // 队列初始化:创建一个结点,且使首尾指针都指向该结点
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if(Q.front == NULL) return false;
Q.front->next = NULL;
return true;
}
bool InQueue(LinkQueue Q,QElemType e) { // 入队操作
QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
if(p == NULL) return false;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;
}
bool OutQueue(LinkQueue Q,QElemType *e) { // 出队操作
QueuePtr p;
if(Q.front == Q.rear) return false;
*e = Q.front->data;
p = Q.front;
Q.front = Q.front->next;
if(Q.rear == p) Q.rear = Q.front;
free(p);
return true;
}