队列(链式)

#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