数据结构学习—栈的实现

是一种特殊的串行形式的数据结构,它只允许在一端进行操作,因而按照后进先出(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值