日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

用栈实现队列与用队列实现栈

發(fā)布時間:2025/3/19 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用栈实现队列与用队列实现栈 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.用棧實現(xiàn)隊列

用棧實現(xiàn)隊列的思路是用兩個棧,只是在出隊的時候,將第一個棧中的元素移動到另一個棧中,在從第二個棧中出棧就可以了.

import java.util.Stack;public class MyQueue {/*你只能使用標(biāo)準(zhǔn)的棧操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。*/private final Stack<Integer> stack1;private final Stack<Integer> stack2;public MyQueue() {stack1 = new Stack<>();stack2= new Stack<>();}public void push(int x) {stack1.push(x);}public int pop() {if(stack2.isEmpty()){moveS1toS2();}return stack2.pop();}public int peek() {if(stack2.isEmpty()){moveS1toS2();}return stack2.peek();}private void moveS1toS2(){while (!stack1.isEmpty()){stack2.push(stack1.pop());}}public boolean empty() {return stack1.empty() && stack2.empty();} }

二.用一個隊列實現(xiàn)棧

用一個queue來存儲數(shù)據(jù),用一個值來存儲棧頂元素.在出棧時,需要把n-2個元素重新出棧,然后加入隊列,剩下兩個元素,一個作為棧頂,一個作為方法返回.

import java.util.LinkedList; import java.util.Queue;public class MyStack {/*你只能使用隊列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 這些操作。*/private Queue<Integer> queue ;private int top=0;public MyStack() {queue = new LinkedList<>();}public void push(int x) {queue.offer(x);top = x;}public int pop() {int n=queue.size();while (n>2){queue.offer(queue.poll());n--;}top = queue.peek();queue.offer(queue.poll());return queue.poll();}public int top() {return top;}public boolean empty() {return queue.isEmpty();}}

總結(jié)

以上是生活随笔為你收集整理的用栈实现队列与用队列实现栈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。