package list;
import java.util.NoSuchElementException;
// pile implémentée avec une liste simplement chaînée
public class Stack implements intf.Stack {
private Singly head;
private int size;
public Stack() {
this.head = null;
this.size = 0;
}
public boolean isEmpty() {
return this.head == null;
}
public int size() {
return this.size;
}
public void push(int x) {
this.head = new Singly(x, this.head);
this.size++;
}
public int top() {
if (this.head == null)
throw new NoSuchElementException();
return this.head.element;
}
public int pop() {
if (this.head == null)
throw new NoSuchElementException();
int e = this.head.element;
this.head = this.head.next;
this.size--;
return e;
}
public String toString() {
StringBuffer sb = new StringBuffer("[");
for (Singly s = this.head; s != null; s = s.next) {
sb.append(s.element);
if (s.next != null) sb.append(", ");
}
return sb.append("]").toString();
}
public static void main(String[] args) {
Stack s = new Stack();
assert (s.isEmpty());
s.push(1);
assert (!s.isEmpty());
s.push(2);
assert (s.top() == 2);
s.push(3);
System.out.println(s);
assert (s.top() == 3);
assert (s.pop() == 3);
assert (s.top() == 2);
assert (s.pop() == 2);
assert (s.top() == 1);
assert (s.pop() == 1);
assert (s.isEmpty());
System.out.println("TestStack OK");
}
}