1.数组实现
public class Zhan<T> {
private T[] arr;
public Zhan(int size) {
arr = (T[]) new Object[size];
}
private int length = 0;
public void push(T data) {
if (length + 1 <= arr.length) {
arr[length++] = data;
}else{
throw new RuntimeException("栈满,无法添加元素");
}
}
public T pop() {
if (length == 0) {
throw new RuntimeException("栈空,无元素可以弹出!");
}
T data = arr[--length];
arr[length] = null;
return data;
}
public int getSize() {
return length;
}
}
2.链表实现
public class Zhan2 {
LinkList linkList;
public Zhan2(){
linkList=new LinkList();
}
public void push(int data){
linkList.push(data);
}
public int pop(){
return linkList.pop();
}
public int size(){
return linkList.getLength();
}
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
}
}
class LinkList {
Node head = new Node(0);
int length = 0;
public void push(int data) {
if (head.next == null) {
head.next = new Node(data);
} else {
Node node = new Node(data);
node.next = head.next;
head.next = node;
}
length++;
}
public int pop() {
if (head.next == null) {
throw new RuntimeException("栈中无元素,无法弹出!");
}
int data = head.next.data;
head.next=head.next.next;
length--;
return data;
}
public int getLength() {
return length;
}
}
}