剣指offer(9)2つのスタックでキュー&2つの列を実現するスタック【JAVA】
3001 ワード
1.2つのスタックがキューを実現する
package example;
import java.util.Arrays;
import java.util.Collections;
import java.util.Stack;
/**
*
* 。 , appendTail deleteHead,
* 。
*
* @author lvtong
* @date 2020/1/30
*/
public class Example9 {
private static Stack stack1 = new Stack<>();
private static Stack stack2 = new Stack<>();
public static void main(String[] args) {
//
stack1.push("A");
stack1.push("B");
stack1.push("C");
stack1.push("D");
stack2.push("E");
appendTail("H");
deleteHead();
//
System.out.print(stack1.toString());
Collections.reverse(stack2);
System.out.print(stack2);
}
/**
*
*/
private static void deleteHead() {
while (!stack1.isEmpty()) {
String temp = stack1.peek();
stack1.pop();
stack2.push(temp);
}
stack2.pop();
}
/**
*
*/
private static void appendTail(String string) {
while (!stack2.isEmpty()) {
String temp = stack2.peek();
stack2.pop();
stack1.push(temp);
}
stack1.push(string);
}
}
2.2つの列実現スタックpackage example;
import java.util.*;
/**
*
*
* @author lvtong
* @date 2020/1/31
*/
public class Related9 {
/**
* 1 push
*/
private static LinkedList queue1 = new LinkedList<>();
/**
* 2 pop
*/
private static LinkedList queue2 = new LinkedList<>();
public static void main(String[] args) {
//
queue1.add("a");
queue1.add("b");
queue1.add("c");
//
pushMethod("D");
popMethod();
pushMethod("E");
popMethod();
popMethod();
}
/**
*
*
* @param string
*/
private static void pushMethod(String string) {
// 1
queue1.add(string);
System.out.println(" :" + string);
System.out.print(" :" + queue1);
System.out.print(queue2);
System.out.println();
}
/**
*
*/
private static void popMethod() {
// 1 , 2
while (queue1.size() != 1) {
String temp = queue1.element();
queue1.remove();
queue2.add(temp);
}
// 1
System.out.println(" :" + queue1.remove());
// 2 1
while (!queue2.isEmpty()) {
queue1.add(queue2.remove());
}
System.out.print(" :" + queue1);
System.out.print(queue2);
System.out.println();
}
}