欢迎访问 生活随笔!

生活随笔

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

编程问答

实现一个队列类,该类用两个栈来实现

发布时间:2025/4/16 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 实现一个队列类,该类用两个栈来实现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1 /* 2 * 实现一个队列类,该类用两个栈来实现 3 * 队列和栈的主要区别是,队列是先进先出,就像我们在食堂[派对打饭一样,先到先打 4 * 栈是先进后出,就像枪里面的子弹,最先进去的把压到了最低 5 * 因此我们只要修改一下peek()和pop(),以相反顺序执行操作,我们可以利用第二个栈来反转元素的次序 6 * 这种做法是可行的,但是却不是效率最高的,元素的移来移去,重复移动,毫无必要。 7 * 所以在这里我们可以延迟元素的移动,就让元素一直留在第二个栈中,只有必须反转元素次序时才移动元素 8 * 9 * 10 * */ 11 12 import java.util.Stack; 13 14 public class StackToQueue<T> { 15 Stack<T> stackNew,stackOld; 16 public StackToQueue() 17 { 18 stackNew = new Stack<T>(); 19 stackOld = new Stack<T>(); 20 21 } 22 public int size() 23 { 24 return stackNew.size()+stackOld.size(); 25 } 26 public void add(T value)//添加元素就放在第一个栈中 27 { 28 stackNew.push(value); 29 } 30 private void shiftStacks()//实现元素的次序反转,元素从第一个栈中拿出然后放到第二个栈中 31 { 32 if(stackOld.isEmpty()) 33 { 34 while(!stackNew.isEmpty()) 35 { 36 stackOld.push(stackNew.pop()); 37 } 38 } 39 } 40 public T peek() 41 { 42 shiftStacks(); 43 return stackOld.peek(); 44 } 45 public T remove() 46 { 47 shiftStacks(); 48 return stackOld.pop(); 49 } 50 51 public static void main(String[] args) { 52 // TODO Auto-generated method stub 53 StackToQueue queue = new StackToQueue(); 54 queue.add(1); 55 queue.add(2); 56 queue.add(3); 57 queue.add(4); 58 queue.add(5); 59 int temp=queue.size(); 60 for(int i=0;i<temp;i++) 61 { 62 System.out.println("队头元素:"+queue.remove()); 63 } 64 65 66 } 67 68 }

 

转载于:https://www.cnblogs.com/luoweiKnowledge/p/3959312.html

总结

以上是生活随笔为你收集整理的实现一个队列类,该类用两个栈来实现的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。