两个队列实现栈
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 }
以上是关于两个队列实现栈的主要内容,如果未能解决你的问题,请参考以下文章