// linkqueue.h代码
#ifndef QUEUE_H
#define QUEUE_H
template <class T> class Queue;
template <class T>
class linknode
{
friend class Queue<T>;
private:
T data;
linknode<T> *next;
};
template <class T>
class Queue
{
public:
Queue() //利用构造函数初始化队列
{
front=rear=0;
};
bool Isempty();
void Front();
void Rear();
void Push(T item);
void Pop();
private:
linknode<T> *front;
linknode<T> *rear;
};
//------判断队列是否为空---------
template <class T>
inline bool Queue<T>::Isempty()
{
return front==0;
}
//-------元素进队列(队尾插入)-------
template <class T>
void Queue<T>::Push(T item)
{
linknode<T> *p=new linknode<T>();
p->data=item;
p->next=0;
cout<<item<<"进队"<<endl;
if(Isempty())
{
front=rear=p;
}
else
{
rear->next=p;
rear=p;
}
}
//------元素出列(队首删除)---------
template <class T>
void Queue<T>::Pop()
{
if(Isempty())
{
cout<<"队列为空,不能出列"<<endl;
}
else
{
linknode<T> *p=front;
cout<<front->data<<"出队"<<endl;
front=front->next;
delete p;
}
}
//------获取队首元素---------------
template <class T>
inline void Queue<T>::Front()
{
if(!Isempty())
{
cout<<"队首元素为"<< front->data<<endl;
}
else
{
cout<< "队列为空"<<endl;
}
}
//------获取队尾元素-------------
template <class T>
inline void Queue<T>::Rear()
{
if(!Isempty())
{
cout<<"队尾元素为"<< rear->data<<endl;
}
else
{
cout<< "队列为空"<<endl;
}
}
#endif
#include "linkqueue.h"
#include <iostream>
using namespace std;
int main()
{
Queue<int> q;
q.Push(10);
q.Push(20);
q.Push(30);
q.Push(40);
q.Front();
q.Rear();
q.Pop();
q.Pop();
q.Pop();
q.Pop();
system("pause");
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/adminabcd/article/details/46731703