queue.h

来自「用c++写的无向图的基本操作 包括深度遍历和广度遍历」· C头文件 代码 · 共 65 行

H
65
字号
#include <iostream>
using namespace std;
#define OK   0;
#define ERROR  1;
typedef  int Status;
typedef int QElemType;
typedef struct QNode{
	QElemType data;
	struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
	QueuePtr front;  //队头指针
	QueuePtr rear;   //队尾指针
}LinkQueue;                     //定义链式列队存储结构
Status InitQueue(LinkQueue &Q)
{
	Q.front=new QNode; if(!Q.front)exit(1);
	Q.rear=Q.front;
	Q.front->next=NULL;                //初始化列队,有头结点
	return OK;
}
Status DestroyQueue(LinkQueue &Q)   //摧毁列队
{
	while(Q.front)
	{
		Q.rear=Q.front->next;
		delete Q.front;
		Q.front=Q.rear;
	}
	return OK;
}
Status EnQueue(LinkQueue &Q,QElemType e)     //入队尾
{
	QueuePtr p;
	p=new QNode;if(!p)exit(1);
	p->data=e;p->next=NULL;
	Q.rear->next=p;
	Q.rear=p;
	return OK;
}
Status DeQueue(LinkQueue &Q,QElemType &e)     //出队
{
	QueuePtr p;
	if(Q.front==Q.rear)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;
}
Status ShowQueue(LinkQueue Q)         //显示列队所有成员
{
	QueuePtr p;
	p=Q.front->next;
	if(Q.front==Q.rear)return ERROR;
	while(p!=Q.rear)
	{
		cout<<p->data<<" ";
		p=p->next;
	}
	cout<<p->data<<" ";
	return OK;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?