Double-Ended Queue(Deque)-1
(1) Linear Deque
int left,right;
itemType Q[n];
void Create_Deque(){
right=n/2;
left=right+1;
}
void Add(bool left_end,itemType item){
if( left_end && left<=0 ||
!left_end && right>=n-1)
move(left_end);
if(left_end==1){
Q[--left]=item;
else
Q[++right]=item;
}
void Del(bool left_end,itemType &item){
if(left>right) cout<<"The queue is empty.";
else if(left_end)
item=Q[left++];
else
item=Q[right--];
}
void move(bool left_end){
if(right-left==n-1) cout<<"The queue is full.";
else if (left){
for(int i=right;i>=left;i--) Q[i+1]=Q[i];
left++;
right++;
}else{
for(int i=left;i<=right;i++) Q[i-1]=Q[i];
left--;
right--;
}
}