Java和C都是常用的编程语言,它们在栈这个数据结构上的应用也很广泛。

Java中实现栈可以使用Stack类或者Deque接口(如ArrayDeque和LinkedList类)。
//使用Stack类
Stack<String> stack = new Stack<>();
stack.push("a");
stack.push("b");
stack.push("c");
System.out.println(stack.pop()); //输出c
System.out.println(stack.peek()); //输出b
//使用ArrayDeque类
Deque<Integer> deque = new ArrayDeque<>();
deque.push(1);
deque.push(2);
deque.push(3);
System.out.println(deque.pop()); //输出3
System.out.println(deque.peek()); //输出2
C中实现栈可以使用数组或者链表。
//使用数组
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int value) {
if (top >= MAX_SIZE - 1) {
printf("栈已满");
} else {
stack[++top] = value;
}
}
int pop() {
if (top < 0) {
printf("栈已空");
return -1;
} else {
return stack[top--];
}
}
//使用链表
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
typedef struct {
ListNode* top;
} Stack;
Stack* createStack() {
Stack* stack = (Stack*)malloc(sizeof(Stack));
stack->top = NULL;
return stack;
}
void push(Stack* stack, int value) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->val = value;
node->next = stack->top;
stack->top = node;
}
int pop(Stack* stack) {
if (stack->top == NULL) {
printf("栈已空");
return -1;
}
int value = stack->top->val;
ListNode* tmp = stack->top;
stack->top = stack->top->next;
free(tmp);
return value;
}
无论是Java还是C,栈都是常用的数据结构之一。在实际开发中,选择合适的栈实现方式可以大大提高程序的效率。