C++实现链式队列

#include<iostream>
using namespace std;
typedef int T;

//单链队列
class Qnode
{
public:
	T data;
	Qnode* next;
};

class LinkQueue
{
public:
	LinkQueue();
	~LinkQueue();
	void EnLinkQueue();  //入队
	void DeLinkQueue(); //出队
	void ShowLinkQueue(); //遍历
	void GetEleLinkQueue();  //查找指定数值

private:
	Qnode* front;
	Qnode* rear;
};

LinkQueue::LinkQueue()
{
	front = rear = new Qnode;
	front->next = NULL;
}
LinkQueue::~LinkQueue()
{
	while (front->next) {
		Qnode* ptemp;
		ptemp = front->next;
		front->next = ptemp->next;
		delete ptemp;
		ptemp = NULL;
	}
	delete front; 
	front = rear = NULL;
}

void LinkQueue::EnLinkQueue()  //入队
{
	Qnode* pnew = new Qnode;
	cout << "输入入队数据:" << " ";
	cin >> pnew->data;
	pnew->next = NULL;
	rear->next = pnew;
	rear = pnew;
	pnew = NULL;
}

void LinkQueue::DeLinkQueue()  //出队
{
	if (front == rear) {
		cout << "空队!" << endl;
	}
	Qnode* ptemp = front->next;
	cout << "出队数据为:" << ptemp->data << endl;
	front->next = ptemp->next;
	if (rear == ptemp) {
		rear = front;
	}
	delete ptemp;
	ptemp = NULL;
}

void LinkQueue::ShowLinkQueue()  //遍历
{
	Qnode* ptemp = front->next;
	cout << "队列元素为:" << endl;
	while (ptemp)
	{
		cout << ptemp->data << " ";
		ptemp = ptemp->next;
	}
	cout << endl;
}

void LinkQueue::GetEleLinkQueue()  //查找指定数值
{
	int i = 0;  int e = 0; cout << "输入查询值:" << " ";  cin >> e;
	Qnode* ptemp = front->next;
	while (ptemp) {
		if (ptemp->data == e) {
			i++;
		}
		ptemp = ptemp->next;
	}
	cout << "队列中存在" << i << "个" << e << endl;
}

int main()
{
	LinkQueue q;
	q.EnLinkQueue();
	q.EnLinkQueue();
	q.EnLinkQueue();
	q.EnLinkQueue();
	q.ShowLinkQueue();

	q.GetEleLinkQueue();
	q.ShowLinkQueue();

	q.DeLinkQueue();
	q.ShowLinkQueue();


	system("pause");
	return 0;
}

实现效果如下:

 


版权声明:本文为weixin_43200943原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。