下面是完整的Java定义栈结构,并实现入栈、出栈操作攻略。
什么是栈
栈是一种“后进先出”(Last In First Out,LIFO)的数据结构,典型的例子是一个子弹夹或一个餐盘堆叠。栈结构在计算机科学中有广泛的应用,例如在函数调用栈、表达式求值、语法分析等领域都有着重要的作用。
Java定义栈结构
在Java中,可以使用数组或链表来实现栈结构。下面是使用数组实现栈结构的示例代码:
public class ArrayStack {
private int top; // 栈顶指针
private int[] stack; // 栈数组
private int capacity; // 栈容量
// 构造方法,创建指定容量的栈
public ArrayStack(int capacity) {
this.capacity = capacity;
this.stack = new int[capacity];
this.top = -1; // 栈顶指向-1,表示栈为空
}
// 入栈操作
public void push(int value) {
if (top == capacity - 1) { // 判断栈是否已满
throw new RuntimeException("Stack is full");
}
stack[++top] = value; // 将元素压入栈中,并将栈顶指针加1
}
// 出栈操作
public int pop() {
if (top == -1) { // 判断栈是否为空
throw new RuntimeException("Stack is empty");
}
return stack[top--]; // 返回栈顶元素,并将栈顶指针减1
}
// 获取栈顶元素
public int peek() {
if (top == -1) { // 判断栈是否为空
throw new RuntimeException("Stack is empty");
}
return stack[top]; // 返回栈顶元素
}
// 判断栈是否为空
public boolean isEmpty() {
return top == -1;
}
// 获取栈的大小
public int size() {
return top + 1;
}
// 打印栈内元素
public void printStack() {
System.out.print("[");
for (int i = 0; i <= top; i++) {
System.out.print(stack[i]);
if (i != top) System.out.print(", ");
}
System.out.println("]");
}
}
在上述代码中,使用一个数组来存储栈中的元素,同时维护一个栈顶指针top,表示当前栈顶元素的位置。在实现入栈操作时,若栈已满则抛出异常;否则将元素压入栈中,并将栈顶指针加1。在实现出栈操作时,若栈为空则抛出异常;否则返回栈顶元素,并将栈顶指针减1。
示例说明
下面,利用刚刚定义的栈结构,给出入栈、出栈操作的两个示例。
示例一:栈内数据类型为字符串类型
public class TestStack {
public static void main(String[] args) {
// 创建一个容量为5的字符串类型的栈
ArrayStack stack = new ArrayStack(5);
// 向栈中压入3个字符串元素
stack.push("Hello");
stack.push("World");
stack.push("!");
// 打印栈内元素和栈大小
stack.printStack();
System.out.println("Stack size: " + stack.size());
// 弹出栈顶元素
String str = (String) stack.pop();
System.out.println("Popped element: " + str);
// 打印栈内元素和栈大小
stack.printStack();
System.out.println("Stack size: " + stack.size());
}
}
在示例一中,我们创建了一个容量为5的字符串类型的栈。向栈内压入三个字符串元素,然后弹出栈顶元素,并打印栈内元素和栈大小。
示例二:栈内数据类型为整型
public class TestStack {
public static void main(String[] args) {
// 创建一个容量为10的整型栈
ArrayStack stack = new ArrayStack(10);
// 向栈中压入10个整型元素
for (int i = 1; i <= 10; i++) {
stack.push(i);
}
// 打印栈内元素和栈大小
stack.printStack();
System.out.println("Stack size: " + stack.size());
// 弹出5个元素,并打印它们
System.out.print("Popped elements: ");
for (int i = 1; i <= 5; i++) {
int val = stack.pop();
System.out.print(val + " ");
}
System.out.println();
// 打印栈内元素和栈大小
stack.printStack();
System.out.println("Stack size: " + stack.size());
}
}
在示例二中,我们创建了一个容量为10的整型栈。向栈内压入10个整型元素,然后弹出栈顶的5个元素,并打印弹出的元素和栈内元素和栈大小。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java定义栈结构,并实现入栈、出栈操作完整示例 - Python技术站