Stack implemented by LinkedList
FILO(first in last out) head 端作为进出口。 api有, push(), pop(), top()
Implemented by LinkedList:
class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
}
public class Stack() {
private ListNode head;
public Stack() {
head = null;
}
public void push(Integer val) {
ListNode newNode = new ListNode(val);
newNode.next = head;
head = newNode;
}
public Integer pop() {
if (head == null) {
return null;
}
ListNode result = head;
head = head.next;
result.next = null;
return result.val;
}
public Integer peek() {
if (head == null) {
return null;
}
return head.val;
}
}
Implemented by array:
public class Stack{
int head;
int[] array;
public Stack(int cap) {
array = new int[cap];
head = -1;
}
public boolean push(int val) {
if (head == array.length - 1) {
return false;
}
array[++head] = val;
return true;
}
public Integer pop() {
if (head == -1) {
return null;
}
return array[head--];
}
public Integer top() {
if (head == -1) {
return null;
}
return array[head];
}
}