初学者,以下程序在vs2005上通过:
#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;
class node
{
public:
int data;
class node *next;
};
typedef class node queuenode;
typedef queuenode *QueueByLinkedList;
QueueByLinkedList front=NULL;
QueueByLinkedList rear=NULL;
//方法enqueue,队列数据存入
void enqueue(int data)
{
QueueByLinkedList node;//建立结点
node=new queuenode;
node->data=data;
node->next=NULL;
if(rear==NULL)
front=node;//建立新结点
else
rear->next=node;
rear=node;
}
//方法enqueue,队列数据取出
int dequeue()
{
int value;
//检查队列是否为空
if(!(front==NULL))
{
if(rear==front)
rear=NULL;
value=front->data;
front=front->next;
return value;
}
else
return -1;
}
int main(void)
{
int temp;
cout<<"以链表来实现队列"<<endl;
cout<<"===================================="<<endl;
cout<<"在队列前端加入第1个数据,此数据值为1"<<endl;
enqueue(1);
cout<<"在队列前端加入第2个数据,此数据值为13"<<endl;
enqueue(13);
cout<<"在队列前端加入第3个数据,此数据值为15"<<endl;
enqueue(15);
cout<<"在队列前端加入第4个数据,此数据值为17"<<endl;
enqueue(17);
cout<<"在队列前端加入第5个数据,此数据值为19"<<endl;
enqueue(19);
cout<<"===================================="<<endl;
while(1)
{
if(!(front==NULL))
{
temp=dequeue();
cout<<"从队列前端依次取出的元素数据值为:"<<setw(1)<<temp<<endl;
}
else
break;
}
cout<<endl;
system("pause");
return 0;
}