Java實(shí)現(xiàn)堆棧的方法
堆棧(Stack)是一種常見的數(shù)據(jù)結(jié)構(gòu),它遵循先進(jìn)后出(Last-In-First-Out,LIFO)的原則。在Java中,我們可以使用數(shù)組或鏈表來實(shí)現(xiàn)堆棧。
1. 使用數(shù)組實(shí)現(xiàn)堆棧
使用數(shù)組實(shí)現(xiàn)堆棧是最簡單的方法之一。我們可以定義一個(gè)固定大小的數(shù)組,并使用一個(gè)指針來指示堆棧頂部的位置。
我們需要定義一個(gè)堆棧類,并聲明一個(gè)數(shù)組和一個(gè)指針變量:
public class Stack {
private int[] array;
private int top;
public Stack(int size) {
array = new int[size];
top = -1;
}
接下來,我們可以實(shí)現(xiàn)堆棧的基本操作,包括入棧(push)、出棧(pop)、判斷堆棧是否為空(isEmpty)和獲取堆棧頂部元素(peek):
public void push(int value) {
if (top == array.length - 1) {
System.out.println("堆棧已滿,無法入棧!");
return;
}
array[++top] = value;
public int pop() {
if (isEmpty()) {
System.out.println("堆棧為空,無法出棧!");
return -1;
}
return array[top--];
public boolean isEmpty() {
return top == -1;
public int peek() {
if (isEmpty()) {
System.out.println("堆棧為空!");
return -1;
}
return array[top];
2. 使用鏈表實(shí)現(xiàn)堆棧
除了使用數(shù)組,我們還可以使用鏈表來實(shí)現(xiàn)堆棧。鏈表實(shí)現(xiàn)堆棧的好處是可以動(dòng)態(tài)地調(diào)整堆棧的大小。
我們需要定義一個(gè)節(jié)點(diǎn)類,表示鏈表中的每個(gè)節(jié)點(diǎn):
class Node {
int value;
Node next;
public Node(int value) {
this.value = value;
this.next = null;
}
然后,我們可以定義一個(gè)堆棧類,并聲明一個(gè)頭節(jié)點(diǎn)變量:
public class Stack {
private Node top;
public Stack() {
top = null;
}
接下來,我們可以實(shí)現(xiàn)堆棧的基本操作,包括入棧(push)、出棧(pop)、判斷堆棧是否為空(isEmpty)和獲取堆棧頂部元素(peek):
public void push(int value) {
Node newNode = new Node(value);
if (isEmpty()) {
top = newNode;
} else {
newNode.next = top;
top = newNode;
}
public int pop() {
if (isEmpty()) {
System.out.println("堆棧為空,無法出棧!");
return -1;
}
int value = top.value;
top = top.next;
return value;
public boolean isEmpty() {
return top == null;
public int peek() {
if (isEmpty()) {
System.out.println("堆棧為空!");
return -1;
}
return top.value;
以上就是使用數(shù)組和鏈表兩種方法實(shí)現(xiàn)堆棧的示例代碼。根據(jù)實(shí)際需求,你可以選擇其中一種方法來實(shí)現(xiàn)堆棧功能。