使用单向链表的方式来实现栈

实体类

package stack;
/**
 * 使用链表的方式来实现栈
 * @author Administrator
 *
 * @param <E>
 */
public class MyStack<E> {
	Node<E> top = null;
	public boolean isEmpty() {
		return top == null;
	}
	
	/**
	 * 压栈操作
	 * @param
	 */
	public void push(E data) {
		Node<E> newNode = new Node<E>(data);
		newNode.next = top;
		top = newNode;
	}
	
	/**
	 * 弹栈操作
	 * @return
	 */
	public E pop() {
		if(this.isEmpty()) {
			return null;
		}
		
		E data = top.data;
		top = top.next;
		return data;
	}
	
	/**
	 * 获取栈顶结点的数据域的值
	 * @return
	 */
	public E peak() {
		if(this.isEmpty()) {
			return null;
		}
		return top.data;
	}
}

/**
 * 结点类
 * @author Administrator
 *
 * @param <E>
 */
class Node<E>{
	// 数据域
	E data;
	// 指针域
	Node<E> next = null;
	// 构造器
	public Node(E data) {
		this.data = data;
	}
	
	
}

测试类

package stack;

public class Test {
	public static void main(String[] args) {
		MyStack<Integer> stack = new MyStack<>();
		stack.push(1);
		stack.push(2);
		stack.push(3);
		stack.push(4);
		stack.push(5);
	
		while(!stack.isEmpty()) {
			System.out.println(stack.pop());
		}
		
	}
}


结果

和单链表的添加不同的是,这种实现方式使得栈中的第一个被添加进去的元素是没有next的

猜你喜欢

转载自blog.csdn.net/qq_34741578/article/details/88690254
今日推荐