#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int QElemType;
typedef int SElemType;
typedef struct QNode
{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q)
{
Q.front =Q.rear =new QNode;
Q.front ->next =NULL;
return OK;
}
//初始化
Status QueueEmpty(LinkQueue Q)
{
if(Q.front==Q.rear)
return TRUE;
else
return FALSE;
}
//判断是否为空
Status EnQueue(LinkQueue &Q,QElemType e)
{
QueuePtr p;
p=new QNode;
if(!p)
return ERROR;
p->data=e;
p->next=NULL;
Q.rear ->next =p;
Q.rear =p;
return OK;
}
//入队
Status DeQueue(LinkQueue &Q,QElemType &e)
{
QueuePtr p;
if(QueueEmpty(Q)) return ERROR;
p=Q.front ->next ;
e=p->data;
Q.front ->next =p->next;
if(Q.rear ==p)
Q.rear =Q.front ;
delete p;
return OK;
}
//出队(删除队头元素,用e返回其值)
SElemType GetHead(LinkQueue Q)
{
if(!QueueEmpty(Q))
return Q.front ->next ->data ;
}
//取队头元素(队头指针不变)
Status QueueOut(LinkQueue Q)
{
QueuePtr p;
p=Q.front->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
return OK;
}
//遍历队列元素
main()
{
int i;
LinkQueue Q;
InitQueue (Q);
for(i=1;i<=10;i++)
EnQueue(Q,i);
QueueOut(Q);
}
队列(链式)
猜你喜欢
转载自blog.csdn.net/sinat_37676560/article/details/68193023
今日推荐
周排行