1. 程式人生 > >順序佇列的c++實現

順序佇列的c++實現

順序佇列的初始化及對佇列的操作儲存在queue.h中

#ifndef QUEUE_H
#define QUEUE_H
template <class T>
class Queue
{
public:
     Queue(int  queuecapacity);
     bool Isempty();
     void Front();
     void Rear();
     void Push(T item);
     void Pop();
private:
    T *queue;
    int front;
    int rear;
    int capacity;
};

//利用建構函式初始化順序佇列
template <class T> Queue<T>::Queue(int queuecapacity) { if( queuecapacity<1) { throw "the capacity of queue must be >0"; } else { queue=new T[queuecapacity]; capacity=queuecapacity; front=rear=0; //犧牲front這個位置,這個位置不放元素 } } //元素進佇列 template
<class T> void Queue<T>::Push(T item) { if((rear+1)%capacity==front) { throw "the queue is full"; } else { rear=(rear+1)%capacity; queue[rear]=item; } } //出列 template <class T> void Queue<T>::Pop() { if(Isempty()) throw "the queue is empty"
; front=(front+1)%capacity; } //判斷佇列是否為空 template <class T> inline bool Queue<T>::Isempty() { return front==rear; } //隊首元素 template <class T> inline void Queue<T>::Front() { if(!Isempty()) { cout<<"隊首元素為"<< queue[(front+1)%capacity]<<endl; } else { cout<< "the queue is empty"<<endl; } } //隊尾元素 template <class T> inline void Queue<T>::Rear() { if(!Isempty()) { cout<<"隊尾元素為"<< queue[rear]<<endl; } else { cout<< "the queue is empty"<<endl; } } #endif

主函式

#include "queue.h"
#include<iostream>
using namespace std;
int main()
{
 Queue<int> q(10);
 q.Push(1);
 q.Push(2);
 q.Push(3);
 q.Front();
 q.Rear();

 q.Pop();
 q.Pop();
 q.Pop();
 q.Front();
 q.Rear();

 q.Push(4);
 q.Front();
 q.Rear();


 system("pause");
 return 0;
}

結果圖
這裡寫圖片描述