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,栈都是常用的数据结构之一。在实际开发中,选择合适的栈实现方式可以大大提高程序的效率。