如何使用LinkedList实现栈和队列结构

如何使用LinkedList实现栈和队列结构

利用现有LinkedList中现有方法实现

使用LinkedList的addFirt作为栈的push操作,removeFirst作为栈的pop操作,具体代码如下:

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> stack = new LinkedList<>();
        stack.addFirst("第1个");
        stack.addFirst("第2个");
        stack.addFirst("第3个");
        System.out.println(stack.removeFirst());
        System.out.println(stack.removeFirst());
        System.out.println(stack.removeFirst());
    }
}

形成类的形式

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedStack stack = new LinkedStack();

        stack.push(1);
        stack.push(2);
        stack.push(3);

        System.out.println("Pop: " + stack.pop());
        System.out.println("Pop: " + stack.pop());
        System.out.println("Pop: " + stack.pop());
    }
}

class Node{
    int data;
    Node next;
    public Node(int data){
        this.data = data;
        this.next = null;
    }
}

class LinkedStack{
    private LinkedList<Node> linkedList;

    public LinkedStack(){
        linkedList = new LinkedList<>();
    }

    // 入栈操作
    public void push(int data){
        Node newNode = new Node(data);
        linkedList.addFirst(newNode);
    }

    // 出栈操作
    public int pop(){
        if(linkedList.isEmpty()){
            throw new IllegalStateException("Stack is empty");
        }
        Node poppedNode = linkedList.removeFirst();
        return poppedNode.data;
    }

    // 查看栈顶元素但不出栈
    public int peek() {
        if (linkedList.isEmpty()) {
            throw new IllegalStateException("Stack is empty");
        }
        return linkedList.getFirst().data;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值