标准论坛网站建设,旅游网站开发需求分析,山东省住房和城乡建设厅网站注册中心,一级消防工程师考试科目有哪些栈与队列
今日任务#xff1a; ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈
1.232.用栈实现队列
232. 用栈实现队列
class MyQueue {//使用两个栈实现先入先出队列//定义两个Stack集合//就已经拥有了这个集合的方法了push pop peek isEmpty等等//但是我们这里是…栈与队列
今日任务 ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈
1.232.用栈实现队列
232. 用栈实现队列
class MyQueue {//使用两个栈实现先入先出队列//定义两个Stack集合//就已经拥有了这个集合的方法了push pop peek isEmpty等等//但是我们这里是实现队列的逻辑//用来入栈Stack Integer stackIn;//一个用来出栈StackInteger stackOut;public MyQueue() {//初始化属性stackInnew Stack();//负责进栈stackOutnew Stack();//负责出栈}public void push(int x) {//队列的进列操作是直接进//栈的入栈操作也是直接进stackIn.push(x);}public int pop() {//队列出列是先出先进先出//栈的出栈是后出先进后出//那么我们现在定义两个栈一个用来入栈//一个用来入栈//将入栈的栈的元素一个一个出到作为出栈的栈里面//再从这个作为出栈的栈进行取出元素此时取出的元素就是队列先进先出那个//把作为入栈的所有元素都移到作为出栈的那个栈里if(stackOut.isEmpty()){while(!stackIn.isEmpty()){//不为空就一直移到作为出栈的那个栈中stackOut.push(stackIn.pop());//存进作为出栈的栈里之后别忘将作为入栈的栈顶元素去除//stackIn.pop();//这一步已经不用做了上一步这样子的已经生效了不像c)}}//现在作为出栈的栈里头就是队列出列顺序了//在进行移除之前我们先将这个要被移除的元素保存下来待会进行返回int resultstackOut.pop();//stackOut.pop();//不需要在移除了上面那一步已经对集合生效了//进行返回return result;}public int peek() {//返回栈顶元素//此时我们应该同作为出栈的顺序是一样的我们可以对作为出栈那个栈进行调用int resultthis.pop();//但此时这个调用之后我们得将那个被移除的元素重新添加进行作为返回stackOut.push(result);return result;}public boolean empty() {//获取是不是空看两个栈是否都是空return stackIn.isEmpty()stackOut.isEmpty();}
}/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj new MyQueue();* obj.push(x);* int param_2 obj.pop();* int param_3 obj.peek();* boolean param_4 obj.empty();*/2.225. 用队列实现栈
225. 用队列实现栈
class MyStack {//这里思路可以用两个队列实现栈仿照用两个栈实现队列//offer poll//但我们这里使用一个队列即可//入栈跟入队列一样//出栈就在队列出来数据之后再将数据入到队列里面QueueInteger queue;public MyStack() {//初始化成员属性queuenew LinkedList();}public void push(int x) {//同栈入栈一样queue.offer(x);}public int pop() {//先将队列的末端出来的位置取出元素放在队列的首端进队列的位置//以什么条件去取元素呢//就是我们先获取当前队列的长度减去一得到除了最底部不变的元素长度//然后让这个长度去自减但是要0int lengthqueue.size();lengthlength-1;//while(length0length--){while(length--0){//取出队列元素,放进入队位置queue.offer(queue.poll());}return queue.poll();}public int top() {int resultthis.pop();queue.offer(result);return result;}public boolean empty() {return queue.isEmpty();}
}/*** Your MyStack object will be instantiated and called as such:* MyStack obj new MyStack();* obj.push(x);* int param_2 obj.pop();* int param_3 obj.top();* boolean param_4 obj.empty();*/