您的位置:首页 > 编程语言 > C语言/C++

链式队列的实现(c++)

2015-07-02 21:51 429 查看

队列的特点是先进先出。

【linkqueue.h代码】

// 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;
}


【结果图】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: