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

Java中实现栈和队列的相关函数

发布时间:2023-06-29 15:46:09

在Java中,可以使用ArrayList来实现栈和队列的相关函数。下面是实现栈和队列的基本操作的代码示例:

栈的基本操作:

import java.util.ArrayList;

class Stack {
    private ArrayList<Integer> stack;
    
    public Stack() {
        stack = new ArrayList<>();
    }
    
    // 入栈
    public void push(int value) {
        stack.add(value);
    }
    
    // 出栈
    public int pop() {
        if(!isEmpty()) {
            int value = stack.get(stack.size() - 1);
            stack.remove(stack.size() - 1);
            return value;
        }
        return -1;
    }
    
    // 判断栈是否为空
    public boolean isEmpty() {
        return stack.isEmpty();
    }
    
    // 获取栈中元素的个数
    public int size() {
        return stack.size();
    }
    
    // 获取栈顶元素
    public int top() {
        if(!isEmpty()) {
            return stack.get(stack.size() - 1);
        }
        return -1;
    }
}

队列的基本操作:

import java.util.ArrayList;

class Queue {
    private ArrayList<Integer> queue;
    
    public Queue() {
        queue = new ArrayList<>();
    }
    
    // 入队
    public void enqueue(int value) {
        queue.add(value);
    }
    
    // 出队
    public int dequeue() {
        if(!isEmpty()) {
            int value = queue.get(0);
            queue.remove(0);
            return value;
        }
        return -1;
    }
    
    // 判断队列是否为空
    public boolean isEmpty() {
        return queue.isEmpty();
    }
    
    // 获取队列中元素的个数
    public int size() {
        return queue.size();
    }
    
    // 获取队列头部元素
    public int front() {
        if(!isEmpty()) {
            return queue.get(0);
        }
        return -1;
    }
    
    // 获取队列尾部元素
    public int rear() {
        if(!isEmpty()) {
            return queue.get(queue.size() - 1);
        }
        return -1;
    }
}

使用栈和队列的示例:

public class StackAndQueueDemo {
    public static void main(String[] args) {
        // 使用栈
        Stack stack = new Stack();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println("栈顶元素:" + stack.top());
        System.out.println("栈的大小:" + stack.size());
        while(!stack.isEmpty()) {
            System.out.println("弹出栈顶元素:" + stack.pop());
        }
        
        // 使用队列
        Queue queue = new Queue();
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        System.out.println("队列头部元素:" + queue.front());
        System.out.println("队列尾部元素:" + queue.rear());
        System.out.println("队列的大小:" + queue.size());
        while(!queue.isEmpty()) {
            System.out.println("出队元素:" + queue.dequeue());
        }
    }
}

以上代码实现了栈和队列的基本操作,包括入栈、出栈、判断栈是否为空、获取栈中元素的个数、获取栈顶元素等栈的操作,以及入队、出队、判断队列是否为空、获取队列中元素的个数、获取队列头部元素、获取队列尾部元素等队列的操作。