Java使用链表(带虚拟头结点)实现栈

Java使用链表(带虚拟头结点)实现栈


接口interface Stack<E>

/**
 * @author yinglongwu
 */
public interface Stack<E> {

	int getSize();
	boolean isEmpty();
	void push(E e);//入栈
	E pop();//出栈
	E peek();//查看栈顶元素
}


实现接口

这里是通过自定义的链表类里的方法来实现Stack接口,进而形成这个LinkedListStack类
自定义的LinkedList类:点我跳转 https://blog.csdn.net/qq_43594119/article/details/105331407

package pers.ylw.stack;

/**
 * @author yinglongwu
 */
//使用链表实现栈
public class LinkedListStack<E> implements Stack<E> {

	private LinkedList<E> list; //自定义的LinkedList类:https://blog.csdn.net/qq_43594119/article/details/105331407
	
	public LinkedListStack() {
		list = new LinkedList<>();
	}

	@Override
	public int getSize() {
		return list.getSize();
	}

	@Override
	public boolean isEmpty() {
		return list.isEmpty();
	}

	//入栈
	@Override
	public void push(E e) {
		list.addFirst(e);
	}

	//出栈
	@Override
	public E pop() {
		return list.removeFirst();
	}

	//查看栈顶元素
	@Override
	public E peek() {
		return list.getFirst();
	}
	
	//重写toString方法,便于输出信息
	@Override
	public String toString() {
		StringBuilder res = new StringBuilder();
		res.append("Stack: top ");
		res.append(list);
		return res.toString();
	}
	
	public static void main(String[] args) {
		
		//测试
		LinkedListStack<Integer> stack = new LinkedListStack<Integer>();
		
		//包装类和其对应的基本数据类型可以自动转换
		//将0到4入栈
		for (int i = 0; i < 5; i++) {
			stack.push(i);
			System.out.println(stack);
		}
		
		//出一次栈
		stack.pop();
		System.out.println(stack);
	}
}

输出结果
在这里插入图片描述

发布了318 篇原创文章 · 获赞 44 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43594119/article/details/105333193