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;
}
}
