网站怎么盈利,wordpress数据表格,百度线上推广,网站建设佰首选金手指二七目录
1.队列实现栈
1.1创建栈
1.2判断是否为空
1.3入栈
1.4出栈
1.5获取栈顶元素
1.6完整代码
2. 用栈实现队列
2.1创建队列
2.2判断是否为空
2.3入队列
2.4出队列
2.5获取队头元素
2.6完整代码 1.队列实现栈 用队列实现栈https://leetcode.cn/problems/impleme…目录
1.队列实现栈
1.1创建栈
1.2判断是否为空
1.3入栈
1.4出栈
1.5获取栈顶元素
1.6完整代码
2. 用栈实现队列
2.1创建队列
2.2判断是否为空
2.3入队列
2.4出队列
2.5获取队头元素
2.6完整代码 1.队列实现栈 用队列实现栈https://leetcode.cn/problems/implement-stack-using-queues/
描述 方法我们用两个队列来实现栈
整体思路 1.1创建栈
代码
public class MyStack {private QueueInteger qu1;private QueueInteger qu2;public MyStack(){qu1new LinkedList();qu2new LinkedList();}}
1.2判断是否为空
只要qu1与qu2都为null时栈就为空
代码 public boolean empty() {return qu1.isEmpty() qu2.isEmpty();}
1.3入栈 1我们对两个队列进行检查那个队列不为空我们就把元素放在那个队里 2若元素都为空则我们把元素放在qu1里 代码 public void push(int x) {if (!qu1.isEmpty()) {qu1.offer(x);} else if (!qu2.isEmpty()) {qu2.offer(x);} else {qu1.offer(x);}}
1.4出栈 1我们对两个队列进行检查若都为空返回-1。 2只要不是1则先检查qu1,再先检查qu2将不为空的队列出size-1个元素到另一个队列里 代码 public int pop() {if (empty()) {return -1;}if(!qu1.isEmpty()){int sizequ1.size() ;for (int i 0; i size-1; i) {int valqu1.poll();qu2.offer(val);}return qu1.poll();} else {int sizequ2.size() ;for (int i 0; i size-1; i) {int valqu2.poll();qu1.offer(val);}return qu2.poll();}}
1.5获取栈顶元素
与出栈方法类似 public int top() {if (empty()) {return -1;}if(!qu1.isEmpty()){int val-1;int sizequ1.size() ;for (int i 0; i size; i) {valqu1.poll();qu2.offer(val);}return val;} else {int val-1;int sizequ2.size() ;for (int i 0; i size; i) {valqu2.poll();qu1.offer(val);}return val;}}
1.6完整代码
import java.util.LinkedList;
import java.util.Queue;public class MyStack {private QueueInteger qu1;private QueueInteger qu2;public MyStack() {qu1 new LinkedList();qu2 new LinkedList();}public void push(int x) {if (!qu1.isEmpty()) {qu1.offer(x);} else if (!qu2.isEmpty()) {qu2.offer(x);} else {qu1.offer(x);}}public int pop() {if (empty()) {return -1;}if(!qu1.isEmpty()){int sizequ1.size() ;for (int i 0; i size-1; i) {int valqu1.poll();qu2.offer(val);}return qu1.poll();} else {int sizequ2.size() ;for (int i 0; i size-1; i) {int valqu2.poll();qu1.offer(val);}return qu2.poll();}}public int top() {if (empty()) {return -1;}if(!qu1.isEmpty()){int val-1;int sizequ1.size() ;for (int i 0; i size; i) {valqu1.poll();qu2.offer(val);}return val;} else {int val-1;int sizequ2.size() ;for (int i 0; i size; i) {valqu2.poll();qu1.offer(val);}return val;}}public boolean empty() {return qu1.isEmpty() qu2.isEmpty();}
}2. 用栈实现队列
描述
用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/ 方法两个栈来实现队列
2.1创建队列
public class MyQueue {private StackInteger stack1;private StackInteger stack2;public MyQueue() {stack1 new Stack();stack2 new Stack();}
}
2.2判断是否为空
只要stack1与stack2都为null时队列就为空
public boolean empty() {return stack1.empty()stack2.empty();}
2.3入队列
入栈的元素全部放入stack1中 public void push(int x) {stack1.push(x);}
2.4出队列
出栈时检查stack2是否为null若为null则直接将stack1的元素出栈后入到stack2里
然后弹出栈顶元素即可 public int pop() {if (empty()){return -1;}if(stack2.empty()){while(!stack1.empty()) {stack2.push(stack1.pop());}}return stack2.pop();}
2.5获取队头元素
public int peek() {if (empty()){return -1;}if(stack2.empty()){while(!stack1.empty()) {stack2.push(stack1.pop());}}return stack2.peek();}
2.6完整代码
import java.util.Stack;public class MyQueue {private StackInteger stack1;private StackInteger stack2;public MyQueue() {stack1 new Stack();stack2 new Stack();}public void push(int x) {stack1.push(x);}public int pop() {if (empty()){return -1;}if(stack2.empty()){while(!stack1.empty()) {stack2.push(stack1.pop());}}return stack2.pop();}public int peek() {if (empty()){return -1;}if(stack2.empty()){while(!stack1.empty()) {stack2.push(stack1.pop());}}return stack2.peek();}public boolean empty() {return stack1.empty() stack2.empty();}
}以上为我个人的小分享如有问题欢迎讨论
都看到这了不如关注一下给个免费的赞