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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值