实现Java数据结构栈和队列

在实现Java数据结构栈和队列之前,首先我们需要了解什么是栈和队列以及它们的特点。

栈(Stack)是一种具有后进先出(Last In First Out,LIFO)特点的数据结构。栈只允许在表的一端进行插入和删除操作,该端称为栈顶。栈顶总是指向最后一个插入的元素。

队列(Queue)是一种具有先进先出(First In First Out,FIFO)特点的数据结构。队列允许在表的一端进行插入操作,在另一端进行删除操作。插入操作在队列的一端(队尾)进行,删除操作在队列的另一端(队首)进行。

接下来,我将向你展示实现Java数据结构栈和队列的步骤和相应的代码。

步骤1:创建一个Stack类

public class Stack<T> {
    private List<T> stack;

    public Stack() {
        stack = new ArrayList<>();
    }

    public void push(T item) {
        stack.add(item);
    }

    public T pop() {
        if (stack.isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.remove(stack.size() - 1);
    }

    public T peek() {
        if (stack.isEmpty()) {
            throw new EmptyStackException();
        }
        return stack.get(stack.size() - 1);
    }

    public boolean isEmpty() {
        return stack.isEmpty();
    }

    public int size() {
        return stack.size();
    }
}

步骤2:创建一个Queue类

public class Queue<T> {
    private List<T> queue;

    public Queue() {
        queue = new ArrayList<>();
    }

    public void enqueue(T item) {
        queue.add(item);
    }

    public T dequeue() {
        if (queue.isEmpty()) {
            throw new NoSuchElementException();
        }
        return queue.remove(0);
    }

    public T peek() {
        if (queue.isEmpty()) {
            throw new NoSuchElementException();
        }
        return queue.get(0);
    }

    public boolean isEmpty() {
        return queue.isEmpty();
    }

    public int size() {
        return queue.size();
    }
}

步骤3:使用栈和队列

public class Main {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println("Stack: " + stack); // 行内代码

        System.out.println("Pop: " + stack.pop()); // 行内代码
        System.out.println("Peek: " + stack.peek()); // 行内代码

        Queue<String> queue = new Queue<>();
        queue.enqueue("Hello");
        queue.enqueue("World");
        System.out.println("Queue: " + queue); // 行内代码

        System.out.println("Dequeue: " + queue.dequeue()); // 行内代码
        System.out.println("Peek: " + queue.peek()); // 行内代码
    }
}

以上是实现Java数据结构栈和队列的代码示例。你可以根据需要自定义栈和队列的元素类型,例如Integer、String等。

下面是栈和队列的关系图:

erDiagram
    Stack ||--o{ List<T>
    Queue ||--o{ List<T>
    List<T> ||--o{ ArrayList<T>

在这篇文章中,我们通过创建Stack类和Queue类来实现Java数据结构栈和队列。通过push、pop、peek等方法,我们可以对栈和队列进行插入、删除和查看操作。在使用栈和队列时,我们需要先创建一个Stack或Queue对象,然后使用相应的方法进行操作。

希望这篇文章对你理解和实现Java数据结构栈和队列有所帮助!