#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;
}
实现效果如下: