用两个栈实现一个队列。
template<typename T> class CQueue
{public:
CQueue(void);
~CQueue(void);
void appendTail(const T& node);
T deleteHead();
private:
stack<T> stack1;
stack<T> stack2;
};
template <typename T> CQueue<T>::CQueue(void)
{
}
template <typename T> CQueue<T>::~CQueue(void)
{
}
template<typename T> void CQueue<T>::appendTail(const T &element)
{
stack1.push(element);
}
template<typename T> T CQueue<T>::deleteHead()
{
if(stack2.size() <= 0)
{
while(stack1.size() > 0)
{
T &data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
printf("error\n");
T head = stack2.top();
stack2.pop();
return head;
}
void test()
{
CQueue<int> tt;
int a[4] = {11,42,4,44};
printf("source array:\n");
for(int i=0;i<4;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(int i=0;i<4;i++)
{
tt.appendTail(a[i]);
}
printf("delete array:\n");
for(int i=0;i<4;i++)
{
int tmp = tt.deleteHead();
printf("%d ",tmp);
}
printf("\n");
}