自己实现的链表的stack

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35529801/article/details/79857374
package hjj.stack;

public class MyLinkedStack<T> {
	private int size;
	private Node first;
	private Node last;
	
	public boolean push(T obj) {
		if(size == 0) {
			Node node = new Node();
			node.obj = obj;
			node.previous = null;
			node.next = null;
			first = node;
			last = node;
		} else {
			Node node = new Node();
			node.obj = obj;
			node.previous = last;
			last.next = node;
			last = node;
		}
		size++;
		return true;
	}
	public T pop() {
		if(size == 0) {
			throw new RuntimeException("已经没有了");
		}
		Node lastNode = last;
		Node node = last.previous;
		if(size == 1) {
			first.next = null;
			size--;
			return (T)first.obj;
		}
		last.previous = null;
		last = node;
		last.next = null;
		size--;
		return (T)lastNode.obj;
	}
	public int indexOf(T obj) {
		Node node = first;
		
		for(int i=0; i<size; i++) {
			if(node.obj.equals(obj)) {
				return i;
			}
			node = node.next;
		}
		return -1;
	}
	public T get(int index) {
		if(index >= size) {
			throw new RuntimeException("数组越界");
		}
		Node node = first;
		for(int i=0; i<index; i++) {
			node = node.next;
		}
		return (T)node.obj;
	}
	public void clear() {
		first = null;
		last = null;
	}
 	public int size() {
		return size;
	}
	//节点
	private class Node {
		public Object obj;
		public Node previous;
		public Node next;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_35529801/article/details/79857374