close


#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");
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 野小孩 的頭像
    野小孩

    野小孩的部落格

    野小孩 發表在 痞客邦 留言(0) 人氣()