#include <iostream>
using namespace std;
const int Size=10;
int q[Size];
int Left,Right,left_end,MoveTime=0;
/*=========================
| Linear Deque |[
===========================*/
/*------------------------------------
函數名稱:CreatDeq()
用途:建立一個新的Deq
參數:
做法:用兩個指標right與left只在此queue的中間位置
-------------------------------------------*/
void CreatDeq()
{
Right=Size/2-1;
Left=Right+1;
//cout<<Right<<" "<<Left;
}
/*------------------------------------
函數名稱:DeqMov()
用途:當資料已達左邊或右邊盡頭時,做搬移的動作
參數:
left_end; 決定由左往右搬動(left=1)還是由右往左搬動(left=0)
--------------------------------------*/
void DeqMov(int left_end)
{
int i;
if(Right-Left!=Size-1 && left_end) //由左往右搬動
{
for(i=Right;i>=Left;i--)
q[i+1]=q[i];
Left++;
Right++;
MoveTime++;
cout<<"已經向右搬移了,總共搬移了"<<MoveTime<<"次"<<endl;
}
else if(Right-Left!=Size-1 && !left_end) //由右往左搬動
{
for(i=Left;i<=Right;i++)
q[i-1]=q[i];
Left--;
Right--;
MoveTime++;
cout<<"已經向左搬移了,總共搬移了"<<MoveTime<<"次"<<endl;
}
else cout<<"the que is full!!"<<endl;
}
/*------------------------------------------
函數名稱:AddDeq()
用途:將資料放入Deq裡面
參數:
left_end:用來決定該從左邊加入(left_end=1)還是從右邊加入(left_endl=0)
item:欲被加入的資料
-------------------------------------------*/
void AddDeq(int left_end,int item)
{
//當資料已達左(右)邊盡頭則做移動
if((left_end && Left<=0) || (!left_end && Right>=Size-1))
DeqMov(left_end);
//選擇從左邊加入還是右邊加入
if(left_end)
q[--Left]=item;
else
q[++Right]=item;
}
/*------------------------------------------------------
函數名稱:DelDeq()
用途:將資料刪除並回傳
參數:
left_end:用來決定該從左邊刪除(left_node=1)還是從右邊刪除(left_end=0)
-------------------------------------------------------*/
int DelDeq(int left_end)
{
if(Left>Right)
cout<<"Deq is empty !!"<<endl;
if(left_end)
return q[Left++];
else
return q[Right--];
}
void main()
{
CreatDeq();
while(!(Right-Left==Size-1))
{
int x;
cin>>left_end>>x;
AddDeq(left_end,x);
}
left_end=0;
DelDeq(left_end);
DelDeq(left_end);
DelDeq(left_end);
AddDeq(!left_end,234);
AddDeq(!left_end,874);
AddDeq(!left_end,134);
while(!(Left>Right))
{
int x;
left_end=1;
x=DelDeq(left_end);
cout<<x<<" ";
}
system("pause");
}
- Nov 17 Thu 2011 22:17
[資料結構] Linear Deque
close
全站熱搜
留言列表