网站后台编辑内容不显示,制作软件下载,北京西路做网站的公司,wordpress 菜单首页题意#xff1a; 用栈来实现队列。 思路#xff1a; 一个栈是不够的#xff0c;至少要两个。 #xff08;1#xff09;插入。永远只插入到stack1中#xff08;插到栈顶#xff09;。 #xff08;2#xff09;弹出。如果stack2不为空#xff0c;直接弹出stack2的栈顶 用栈来实现队列。 思路 一个栈是不够的至少要两个。 1插入。永远只插入到stack1中插到栈顶。 2弹出。如果stack2不为空直接弹出stack2的栈顶否则将stack1中的所有元素转移到stack2中栈顶自然就是队头了再弹出。 3返回队头。与2一样。 4是否为空。判断两个栈是否同时为空即可。 只要保证stack2为空时才可以将stack1转移到stack2中就可以保证两边并不会产生混乱而出错。 1 class Queue {2 /*3 // Push element x to the back of queue.4 void push(int x) {5 6 }7 8 // Removes the element from in front of queue.9 void pop(void) {
10
11 }
12
13 // Get the front element.
14 int peek(void) {
15
16 }
17
18 // Return whether the queue is empty.
19 bool empty(void) {
20
21 }
22 */
23 stackint stack1,stack2;
24 public:
25 bool change()//当stack2为空时将stack1转到stack2中
26 {
27 while(!stack1.empty())
28 {
29 stack2.push(stack1.top());
30 stack1.pop();
31 }
32 if(stack2.empty()) return true;
33 else return false;
34 }
35 void push(int x)
36 {
37 stack1.push(x);
38 }
39 void pop(void)
40 {
41 if(!stack2.empty()) stack2.pop();
42 else if(!change()) stack2.pop();
43 }
44 int peek(void)
45 {
46 if(!stack2.empty()) return stack2.top();
47 else
48 {
49 if(!change()) return stack2.top();
50 return 0;
51 }
52 }
53 bool empty(void)
54 {
55 if(stack1.empty()stack2.empty()) return true;
56 else return false;
57 }
58 }; AC代码 转载于:https://www.cnblogs.com/xcw0754/p/4927606.html