栈是一种特殊的串行形式的数据结构,它只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。
栈有两个主要操作:推入(push)和弹出(pop):
推入:将数据放入堆栈的顶端(阵列形式或串行形式),堆栈顶端top指标加一。
弹出:将顶端数据资料输出(回传),堆栈顶端资料减一。
Java实现:
public class StackTest<T> {
Note first;
public synchronized T push(T t){
if (first==null) {
first = new Note(t);
} else {
Note newNote = new Note(t);
newNote.setNext(first);
first = newNote;
}
return t;
}
public synchronized T pop(){
if (first == null) {
return null;
} else {
Note temp = first;
first = temp.getNext();
return temp.getValue();
}
}
private class Note{
private T value;
private Note next;
Note(T t){
value = t;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public Note getNext() {
return next;
}
public void setNext(Note next) {
this.next = next;
}
}
public static void main(String[] args) {
StackTest<String> stack = new StackTest<String>();
for(int i=0;i<10;i++){
stack.push(String.valueOf(i));
}
for(int i=0;i<10;i++){
System.out.println(stack.pop());
}
}
}
输出结果:
9
8
7
6
5
4
3
2
1
0