Stack implementations

Run Settings
LanguageJava
Language Version
Run Command
class Main { public static void main(String[] args) { Stack<String> lsos = new Stack<String>(); for (int i = 0; i < 100; i++) { lsos.push(String.valueOf(i)); } for (int i = 0; i < 100; i++) { System.out.println(lsos.pop()); } } } class Stack<Item> { private Node first = null; private class Node { Item item; Node next; } public boolean isEmpty() { return first == null; } public void push(Item item) { Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; } public Item pop() { Item item = first.item; first = first.next; return item; } } class LinkedStackOfStrings { private Node first = null; private class Node { String item; Node next; } public boolean isEmpty() { return first == null; } public void push(String item) { Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; } public String pop() { String item = first.item; first = first.next; return item; } } class FixedCapacityStack<Item> { private Item[] s; private int N = 0; public FixedCapacityStack(int capacity) { s = new Item[capacity]; } public boolean isEmpty() { return N == 0; } public void push(Item item) { s[N++] = item; } public Item pop() { return s[--N]; } } class FixedCapacityStackOfStrings { private String[] s; private int N = 0; public FixedCapacityStackOfStrings(int capacity) { s = new String[capacity]; } public boolean isEmpty() { return N == 0; } public void push(String item) { s[N++] = item; } public String pop() { return s[--N]; } } class ResizingArrayStackOfStrings{ private String[] s; private int N = 0; ResizingArrayStackOfStrings() { s = new String[1]; } public void push(String item) { if (N == s.length) resize(2 * s.length); s[N++] = item; } public String pop() { String item = s[--N]; s[N] = null; if (N > 0 && N == s.length/4) resize(s.length/2); return item; } private void resize(int capacity) { String[] copy = new String[capacity]; for (int i = 0; i < N; i++) copy[i] = s[i]; s = copy; } }
Editor Settings
Theme
Key bindings
Full width
Lines