#include<iostream>
using namespace std;
typedef int QEueue;
#define OK 1
#define ERROR 0
typedef int QElemType;
typedef int Status;
//队列的链式结构
/***************************
在队列的链中,是使用类似于有头节点的链表,所以在插入,
或者删除时是对头节点(front)以后的节点操作,
删除时还需要注意当出队列的时候只剩下两个节点,
front rear,删除时需要考虑将rear移至front处
***************************/
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,QueuePtr;
typedef struct
{
QueuePtr front,rear;
}LinkQueue;
//入队列
Status EnQueue(LinkQueue *Q,QElemType e)
{
QueuePtr s=(QueuePtr)malloc(sizeof(QNode));
if(!s)
{
s->data=e
s->next-NULL;
Q->front->next=s;
Q->front=s;
return Ok;
}
}
//出队列
Status DeQueue(LinkQueue *Q,QElemType *e)
{
QueuePtr p;
if(S->rear==S->front)
{
cout<<"队空"<<endl;
return ERROR;
}
*e=Q->front->data;
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p)
{
Q->rear=Q->front;
}
free(p);
return OK;
}
数据结构那点事--队列(链式结构)
最新推荐文章于 2022-04-15 23:46:11 发布