#栈(Stack)#
栈(Stack)是一种基本的数据结构,它有先进后出的特性,有入栈、出栈等操作,我们采用链表结构来实现栈,下面给出栈的Java实现
/**
* Created by CvShrimp on 2017/10/21.
*/
public class Stack<T> {
private Node top;
private int size = 0;
private class Node {
private T data;
private Node next;
public Node(T data, Node next) {
this.data = data;
this.next = next;
}
}
public boolean isEmpty() {
return top == null || top.data == null;
}
/**
* 将元素入栈
* @param data
* @return
*/
public boolean push(T data) {
if(data == null) {
return false;
}
Node node = new Node(data, this.top);
this.top = node;
size++;
return true;
}
/**
* 弹出并返回栈顶的元素
* @return
*/
public T pop() {
if(isEmpty()) {
return null;
}
T data = this.top.data;
this.top = this.top.next;
size--;
return data;
}
/**
* 获得栈顶的元素,但不弹出元素
* @return
*/
public T peek() {
if(isEmpty()) {
return null;
}
T data = this.top.data;
return data;
}
/**
* 返回栈中元素的个数
* @return
*/
public int size() {
return size;
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack();
System.out.println(stack.isEmpty());
System.out.println(stack.push(1));
System.out.println(stack.push(6));
System.out.println(stack.size());
System.out.println(stack.isEmpty());
System.out.println(stack.pop());
System.out.println(stack.size());
System.out.println(stack.peek());
System.out.println(stack.pop());
System.out.println(stack.isEmpty());
}
}