实现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数据结构栈和队列有所帮助!