190422打卡:队列实现栈

问题描述:
如何仅用队列实现栈结构?
在这里插入图片描述
思路:用两个队列实现栈,当入栈时,元素只进入data队列,当出栈时,将data队列的最后一个元素保留,然后将剩下的元素倒入到help队列中,然后将data队列中唯一一个元素出队,这样就达到了出栈的效果,然后将data栈和help栈交换,这样就可以保证下一次如果用户要求再次出栈就可以重复上述过程

package code001_code010;

import java.util.LinkedList;
import java.util.Queue;

public class Code_003_QueueToStack {
	
	public static class QueueToStack {
		private Queue<Integer> data;
		private Queue<Integer> help;
		
		public QueueToStack() {
			data = new LinkedList<>();
			help = new LinkedList<>();
		}
		
		public void push(int obj) {
			data.add(obj);
		}
		
		public int pop() {
			if (data.isEmpty()) {
				throw new RuntimeException("Pop failed, Stack is empty");
			} 
			while(data.size() > 1) {
				help.add(data.poll());					
			}
			int res = data.poll();
			swap();
			return res;
		}
		
		public int peek() {
			if (data.isEmpty()) {
				throw new RuntimeException("Pop failed, Stack is empty");
			}
			while(data.size() > 1) {
				help.add(data.poll());					
			}
			int res = data.peek();
			help.add(res);
			swap();
			return res;
		}
		
		public void swap() {
			Queue<Integer> temp = data;
			data = help;
			help = temp;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42447402/article/details/89451454