【Java--数据结构】栈:不仅仅是数据存储,它是编程的艺术
栈(Stack)是一种线性数据结构,它遵循后进先出(LIFO)原则。在计算机科学中,栈常用于存储临时数据,如函数调用的局部变量、保存中间结果的计算过程等。
以下是使用Java实现栈的基本操作:
public class Stack<T> {
private int size;
private Node<T> top;
public Stack() {
size = 0;
top = null;
}
// 入栈操作
public void push(T data) {
Node<T> newNode = new Node<>(data);
if (top != null) {
newNode.next = top;
}
top = newNode;
size++;
}
// 出栈操作
public T pop() {
if (isEmpty()) {
return null;
}
T data = top.data;
top = top.next;
size--;
return data;
}
// 查看栈顶元素
public T peek() {
if (isEmpty()) {
return null;
}
return top.data;
}
// 判断栈是否为空
public boolean isEmpty() {
return size == 0;
}
// 获取栈的大小
public int size() {
return size;
}
private static class Node<T> {
T data;
Node<T> next;
public Node(T data) {
this.data = data;
this.next = null;
}
}
}
使用示例:
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 入栈
stack.push(1);
stack.push(2);
stack.push(3);
// 查看栈顶元素
System.out.println("栈顶元素: " + stack.peek()); // 输出: 栈顶元素: 3
// 出栈
System.out.println("出栈元素: " + stack.pop()); // 输出: 出栈元素: 3
// 再次查看栈顶元素
System.out.println("栈顶元素: " + stack.peek()); // 输出: 栈顶元素: 2
// 获取栈的大小
System.out.println("栈的大小: " + stack.size()); // 输出: 栈的大小: 2
// 判断栈是否为空
System.out.println("栈是否为空: " + stack.isEmpty()); // 输出: 栈是否为空: false
}
}
以上代码实现了一个简单的栈数据结构,并展示了如何使用它进行入栈、出栈、查看栈顶元素等操作。这个实现有利于进一步理解栈的概念和操作。
评论已关闭