栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现链式队列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现链式队列

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

实现效果如下:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号