#include<iostream>
using namespace std;
const int N=100;
int q[N];
int front,rear;
void CreatQ() //建立Queue
{front=rear=-1;} //將front指標與rear指標設在一開始的位子
bool IsEmptyQ()//檢查Queue是不是空的
{return (front==rear);}//當front與rear在同一個位子就是空的回傳真!
void QueueEmpty()
{
cout<<"Queue is Empty!!"<<endl;
}
bool IsFullQ()//檢查Queue是不是滿的
{return (front==-1&&rear==N-1);}//當fornt在開始位子而rear已經指到頂部,則這個Queue就是滿的,回傳真!
void QueueFull()
{
cout<<"Queue is Full!!"<<endl;
}
void error()
{
cout<<"Error!!"<<endl;
}
void QueueMove() //當想加入新的資料時,rear已經指到頂部了,但Queue卻還沒滿,則須搬動Queue內的資料!
{
int i;
if(front==-1)QueueFull(); //如果front指標依然在開始位子則此Queue確實是滿的
for(i=front+1;i<=rear;i++)
q[i-front-1]=q[i];
rear=rear-front-1;
front=-1;
}
void AddQ(int item)//加入新的資料到Queue
{
if(rear==N-1)QueueMove(); //若rear已經指到頂部了,則可能需要搬動Queue裡面的資料
q[++rear]=item; //若沒有指到頂部就將rear指標指向下一位並把資料加入
}
int DeleteQ()// 把資料從Queue刪除
{
if(IsEmptyQ())QueueEmpty(); //如果Queue是空的,則說是空的
return q[++front]; //若不為空,則front的下一位回傳
}
int FrontQ()//
{
if(IsEmptyQ())error();
else return q[front+1];
}
void main()
{
system("pause");
}
- Nov 15 Tue 2011 11:25
[資料結構] Queue
close
全站熱搜
留言列表