C++编程练习(6)----“实现简单的队列的链式存储结构“

队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出。简称链队列。

实现代码如下:

/* LinkQueue.h 头文件 */
#include<iostream>
#define OK 1
#define ERROR 0
typedef int QElemType;
typedef int Status;

class QNode{
public:
	QNode():data(0),next(NULL) {}
	QElemType data;
	QNode *next;
};

class LinkQueue{
public:
	LinkQueue() {front=new QNode;rear=new QNode;front=rear;}
	Status EnQueue(QElemType e);	/*入队操作*/
	Status DeQueue(QElemType *e);	/*出队操作*/
	Status ShowQueue() const;
private:
	QNode *front,*rear;	/*队头、队尾指针,队头不保存元素,只起头结点作用,当front==rear时,队列为空*/
};

Status LinkQueue::EnQueue(QElemType e)
{
	QNode *p=new QNode;
	if(!p)
		return ERROR;
	p->data=e;
	p->next=NULL;
	rear->next=p; 
	rear=p;
	return OK;
}

Status LinkQueue::DeQueue(QElemType *e)
{
	if(rear==front)	/*空队列*/
		return ERROR;
	QNode *p=new QNode;
	if(!p)
		return ERROR;
	p=front->next;
	*e=p->data;
	front->next=p->next;
	if(rear==p)
		rear=front;
	delete p;
	return OK;
}

Status LinkQueue::ShowQueue() const
{
	if(rear==front)
	{
		std::cout<<"空队列"<<std::endl;
		return ERROR;
	}
	QNode *p=new QNode;
	if(!p)
		return ERROR;
	std::cout<<"队列从队头至队尾内容依次为:";
	p=front->next;
	while(p)
	{
		std::cout<<p->data<<"  ";
		p=p->next;
	}
	std::cout<<std::endl;
	return OK;
}


原文地址:https://www.cnblogs.com/fengty90/p/3768857.html