欢迎访问宙启技术站
智能推送

Java函数实现数据结构中的栈和队列

发布时间:2023-09-15 10:28:52

Java是一种面向对象的编程语言,提供了丰富的数据结构和算法库。在Java中,可以使用类和方法来实现数据结构中的栈和队列。

1. 栈(Stack)是一种后进先出(Last-In-First-Out,LIFO)的数据结构,类似于现实生活中的栈。Java中可以使用数组或链表来实现栈。

使用数组实现一个栈:

public class ArrayStack {
    private int maxSize; // 栈的最大容量
    private int[] stack; // 用数组来存储栈的元素
    private int top; // 栈顶指针

    public ArrayStack(int maxSize) {
        this.maxSize = maxSize;
        stack = new int[maxSize];
        top = -1; // 初始化栈顶指针为-1
    }

    public boolean isEmpty() {
        return top == -1;
    }

    public boolean isFull() {
        return top == maxSize - 1;
    }

    public void push(int data) {
        if (isFull()) {
            System.out.println("栈已满,无法添加元素");
            return;
        }
        stack[++top] = data; // 先移动指针,再插入元素
    }

    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("栈为空,无法弹出元素");
        }
        return stack[top--]; // 先取出元素,再移动指针
    }

    public int peek() {
        if (isEmpty()) {
            throw new RuntimeException("栈为空,无法获取栈顶元素");
        }
        return stack[top];
    }
}

使用链表实现一个栈:

public class LinkedListStack {
    class Node {
        int data;
        Node next;

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

    private Node top; // 栈顶节点

    public boolean isEmpty() {
        return top == null;
    }

    public void push(int data) {
        Node newNode = new Node(data);
        newNode.next = top;
        top = newNode;
    }

    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("栈为空,无法弹出元素");
        }
        int data = top.data;
        top = top.next;
        return data;
    }

    public int peek() {
        if (isEmpty()) {
            throw new RuntimeException("栈为空,无法获取栈顶元素");
        }
        return top.data;
    }
}