question:
Steque. a stack-ended queue or steque is a data type that supports push, pop, and enqueue. articulate an api for this adt. develop a linked-list-based implementation.
import edu.princeton.cs.algs4.*; public class Stack_ended_queue<Item> { private class Node { Item item; Node next; } private Node first; private Node last; private int size = 0; public boolean isEmpty() { return size == 0; } public int Size() { return size; } public void push(Item item) { Node node = new Node(); node.item = item; node.next = null; if(this.isEmpty()) { last = first = node; } else { node.next = first; first = node; } size++;//注意别放在isEmpty()前,不然为空反而会执行else导致崩溃 } public Item pop() { if(this.isEmpty()) { return null; } size--; Item item = first.item; first = first.next; return item; } public void enqueue(Item item) { Node node = new Node(); node.item = item; node.next = null; if(this.isEmpty()) { last = first = node; } else { last.next = node; last = node; } size++;//注意别放在isEmpty()前,不然为空反而会执行else导致崩溃 } public static void main(String[] args) { Stack_ended_queue<String> seq = new Stack_ended_queue(); seq.enqueue("c"); seq.push("j"); seq.push("w"); StdOut.println(seq.Size()); for(int i = 0; i < 3; i++) { StdOut.print(seq.pop() + "\t"); } StdOut.print("\n"); StdOut.println(seq.Size()); } }