数据结构基础:线性表-栈(Java实现)

栈(堆栈,Stack):是一种特殊的线性表,只能在表尾进行插入和删除操作。
在这里插入图片描述
栈顶(Top):线性表允许插入的那一端。

栈底(Bottom):固定的,不允许进行插入和删除的另一端。

空栈:不含任何元素的空表。
因为栈底是封闭的,因此,先进入栈中的元素,只能等待后进入的元素出栈后才能被取出。遵循“先进后出”原则。
在这里插入图片描述
栈的操作:

  • pop:出栈操作,从栈顶取出一个元素
  • push:入栈操作,从栈顶加入一个元素

Java代码实现

public class LinkedStack<E> {
    private final Node<E> head = new Node<>(null);

    //入栈操作
    public void push(E element){
        Node<E> node=new Node<>(element); //创建新的结点
        node.next = head.next; //新结点下一个结点变成栈顶结点
        head.next = node; //头结点的下一个结点改成新的结点
    }

    //出栈操作
    public E pop(){
        if(isEmpty()){//判断栈是否为空
            throw new NoSuchElementException("栈空");
        }
        E e = head.next.element;//取出栈顶元素
        head.next = head.next.next;//更改栈顶元素
        return e;
    }

    public boolean isEmpty(){//判断栈是否为空
        return head.next == null;
    }

    private static class Node<E>{
        private E element;
        private Node<E> next;
        public Node(E e){
            this.element = e;
        }
    }

}

测试

public class LinkedStackTest {
    public static void main(String[] args) {
        LinkedStack<String> stack = new LinkedStack<>();
        stack.push("A");//入栈操作
        stack.push("B");
        stack.push("C");
        stack.push("D");
        while (!stack.isEmpty()){
            System.out.println(stack.pop());//进行出栈操作
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值