front指向链队列的头结点
rear指向终端结点
rear->next=NULL;
#include <iostream>
using namespace std;
class Node//结点类
{
public:Node();~Node();int DATA;Node *next;
};Node::Node()
{
}Node::~Node()
{}class queue
{
public:queue();~queue();bool popqueue(int e);//出队bool pushqueue(const int &e);//入队bool isempty();//队列是否为空bool foreach_queue();//遍历队列
private:Node *front;Node *rear;
};queue::queue()
{Node *ptemp = new Node;//头结点front = ptemp;rear = ptemp;rear->next = NULL;
}queue::~queue()
{
}bool queue::popqueue(int e)
{if (front == rear){cout << "队列为空" << endl;return false;}Node *p = front->next;//此为要删除的结点e = p->DATA;front->next = p->next;if (p->next = rear->next){rear = front;}free(p);return true;
}
bool queue::pushqueue(const int &e)
{Node *temp = new Node;//新建结点temp->DATA = e;temp->next = NULL;rear->next = temp;rear = temp;return true;
}bool queue::isempty()
{return (rear == front) ? true : false;
}bool queue::foreach_queue()
{if (isempty()){return false;}Node *p = front;//找到头结点while ((p=p->next) != NULL){cout << p->DATA << " ";}cout << endl;return true;
}void main()
{queue q1;int a=0;q1.pushqueue(1);q1.pushqueue(2);q1.pushqueue(3);q1.pushqueue(4);q1.foreach_queue();q1.popqueue(a);q1.foreach_queue();system("pause");
}