算法导论chapter10双端队列的实现
看起来比较麻烦,不过我写的实现比较简单,估计还有很多问题,哪位看出来了,帮忙指出来啊!3Q!
#include<iostream>
using namespace std;
const int MAX = 1000;
struct my_deuqe
{
int data[MAX];
int head1, tail1;
int head2,tail2;
};
bool empty(my_deuqe q)
{
return q.head1 == q.tail1 && q.head2 == q.tail2;
}
void Lenque(my_deuqe &q, int value)
{
if(q.tail1 == q.tail2)
{
cerr << "The deque is overflow\n";
exit(1);
}
q.data[q.tail1] = value;
q.tail1 = (q.tail1 + 1) % MAX;
}
void Renque(my_deuqe &q, int value)
{
if(q.tail2 == q.tail1)
{
cerr << "The deque is overflow\n";
exit(1);
}
q.data[q.tail2] = value;
q.tail2 = (q.tail2 - 1) % MAX;
}
int Ldeuque(my_deuqe &q)
{
if(q.head1 == q.tail1)
{
cerr << "The left is empty";
exit(1);
}
int temp = q.data[q.head1];
q.head1++;
return temp;
}
int Rdeuque(my_deuqe &q)
{
if(q.head2 == q.tail2)
{
cerr << "The left is empty";
exit(1);
}
int temp = q.data[q.head2];
q.head2--;
return temp;
}
my_deuqe Init()
{
my_deuqe q;
q.head1 = q.tail1 = 0;
q.head2 = q.tail2 = MAX - 1;
return q;
}
int main()
{
my_deuqe q = Init();
Lenque(q,10);
cout << Ldeuque(q) << endl;
}

浙公网安备 33010602011771号