双端队列

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 #define size 10
 5 struct  squeue
 6 {
 7     int queue[size];
 8     int front,rear;
 9 };
10 void initqueue(squeue *sq)
11 {
12     sq->front=sq->rear=0;
13 }
14 int isempty(squeue *sq)
15 {
16     if(sq->front==sq->rear)
17         return 1;
18     return 0;    
19 }
20 int enqueue(squeue *sq,int e,int de)
21 {
22 
23     if(de==0)
24     {
25         if(sq->front==0)
26         {
27             return 0;
28         }
29         else
30         {
31             sq->front--;
32             sq->queue[sq->front]=e;
33         }
34     }
35     else
36     {
37         if(sq->rear==size)
38         {
39             return 0;
40         }
41         else
42         {
43             sq->queue[sq->rear]=e;
44             sq->rear++;
45         }
46     }
47 }
48 int ouqueue(squeue *sq,int &e,int de)
49 {
50     if(isempty(sq))
51         return 0;
52     if(de==0)
53     {
54         e=sq->queue[sq->front];
55         sq->front++;
56     }
57     else
58     {
59         e=sq->queue[sq->rear-1];
60         sq->rear--;
61     }
62 }
63 int main(int argc, char const *argv[])
64 {
65     squeue s;
66     initqueue(&s);
67     int i,e;
68     for(i=0;i<5;i++)
69         enqueue(&s,i,1);
70     for(i=0;i<5;i++)
71     {
72         ouqueue(&s,e,0);
73         cout<<e<<' ';
74         
75     }
76     cout<<endl;
77     for(i=10;i>=6;i--)
78     {
79         enqueue(&s,i,0);
80     }
81     for(i=0;i<5;i++)
82     {
83         ouqueue(&s,e,1);
84         cout<<e<<' ';
85     }
86     return 0;
87 }

 

posted @ 2015-07-23 16:43  御心飞行  阅读(208)  评论(0编辑  收藏  举报