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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java用队列实现栈、用栈实现对队列

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java用队列实现栈、用栈实现对队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

用隊列實現棧

用棧實現對隊列

LeetCode題

225. 用隊列實現棧

232. 用棧實現隊列

用隊列實現棧

思路:
1.創建兩個隊列,
2.哪個隊列不為空就將要push的元素放到該隊列中,若都為空就默認放入qu1隊列中,
3.pop時,將不為空的隊列元素放入為空的隊列中,并彈出最后一個元素

import java.util.LinkedList; import java.util.Queue; class MyStack {//1.創建兩個隊列public Queue<Integer> qu1;public Queue<Integer> qu2;public MyStack() {qu1 = new LinkedList<>();qu2 = new LinkedList<>();}//2.哪個隊列不為空就將要push的元素放到該隊列中,若都為空就默認放入qu1隊列中,public void push(int x) {if(empty()){//都為空默認放入qu1中qu1.offer(x);}else if(!qu1.isEmpty()){//不為空就可以offerqu1.offer(x);}else{qu2.offer(x);}}//3.pop時,將不為空的隊列元素放入為空的隊列中,并彈出最后一個元素public int pop() {int len = 0;if(empty()){//都為空return -1;}if(!qu1.isEmpty()){//qu1不為空就放到qu2中(空)len = qu1.size();for(int i = 0; i < len - 1; ++i){//放入到qu2int x = qu1.poll();qu2.offer(x);}return qu1.poll();//彈}else{len = qu2.size();for(int i = 0; i < len - 1; ++i){//放入到qu1int x = qu2.poll();qu1.offer(x);}return qu2.poll();//彈}}//和pop一樣,只是一個return元素,一個return值public int top() {int len = 0;int x = 0;if(empty()){//都為空return -1;}if(!qu1.isEmpty()){//不為空就放到qu2中len = qu1.size();for(int i = 0; i < len; ++i){//放入到qu2x = qu1.poll();qu2.offer(x);}return x;//彈}else{len = qu2.size();for(int i = 0; i < len; ++i){//放入到qu1x = qu2.poll();qu1.offer(x);}return x;//彈}}//判空public boolean empty() {if(qu1.isEmpty() && qu2.isEmpty()){return true;}return false;} }

用棧實現對隊列

思路:
1.創建兩個棧,
2.st1棧用于壓入元素,
3.st2用于彈出元素,
4.若st2為空,則將st1棧中的元素壓入st2棧中

import java.util.Stack; class MyQueue {//1.創建兩個棧,Stack<Integer> st1;Stack<Integer> st2;public MyQueue() {st1 = new Stack();st2 = new Stack();}//2.st1棧用于壓入元素public void push(int x) {//第一個棧入,第二個棧出st1.push(x);}//3.st2用于彈出元素public int pop() {int len = 0;if(empty()){//都為空return -1;}if(!st2.empty()){//第二個不為空,直接出return st2.pop();}else{//第二個為空len = st1.size();int val = 0;for(int i = 0; i < len; ++i){val = st1.pop();st2.push(val);}return st2.pop();}}//與pop類似,只是返回值不同public int peek() {int len = 0;if(empty()){//都為空return -1;}if(!st2.empty()){//第二個不為空,直接出return st2.peek();}else{//第二個為空len = st1.size();int val = 0;for(int i = 0; i < len; ++i){val = st1.pop();st2.push(val);}return st2.peek();}}//判空public boolean empty() {if(st1.empty() && st2.empty()){return true;}return false;} }

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。