两个队列实现栈

Posted susidian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个队列实现栈相关的知识,希望对你有一定的参考价值。

 1 push(const T& element)
 2 {
 3 if(queue1.size()>0)//如果queue1不为空则往queue1中插入元素
 4 queue1.push(element);
 5 else if(queue2.size()>0)//如果queue2不为空则往queue2中插入元素
 6 queue2.push(element);
 7 else//如果两个队列都为空,则往queue1中插入元素
 8 queue1.push(element);
 9 
10 }
11 
12 //删除元素
13 T CStack<T>::pop()
14 {
15 if(queue1.size()==0)//如果queue1为空
16 {
17 while(queue2.size()>1)//保证queue2中有一个元素,将其余元素保存到queue1中
18 {
19 queue1.push(queue2.front());
20 queue2.pop();
21 }
22 
23 T& data=queue2.front();
24 queue2.pop();
25 return data;
26 }
27 else//如果queue2为空
28 {
29 while(queue1.size()>1)//保证queue2中有一个元素,将其余元素保存到queue1中
30 {
31 queue2.push(queue1.front());
32 queue1.pop();
33 }
34 T& data=queue1.front();
35 queue1.pop();
36 return data;
37 }
38 
39 删除字符串空格
40 void TrimSpace(char *str)
41 {
42 if(str == NULL)
43 return ;
44 int i=0;
45 int j=0;
46 while(str[j] ==  ) ++j;
47 int n = strlen(str);
48 int k = n-1;
49 while(str[k] ==  )--k;
50 str[k+1] = \0;
51 while(str[j] != \0)
52 {
53 while(str[j] ==  )++j; 
54 if(str[j-1] ==   && str[j-2] ==   && i != 0)
55 str[i++] =  ;
56 str[i++] = str[j++];
57 }
58 str[i] = \0;
59 }

 

以上是关于两个队列实现栈的主要内容,如果未能解决你的问题,请参考以下文章

用两个栈实现队列-剑指Offer

《剑指Offer——面试题9:用两个栈实现队列》代码

两个栈实现一个队列

剑指offer-用两个栈实现队列

用两个栈实现一个队列

用两个栈实现一个队列(C++)