阅读量:0
在C语言中,栈可以使用数组或链表来实现。以下是一种使用数组实现栈的方法:
#include <stdio.h> #define MAX_SIZE 100 typedef struct { int arr[MAX_SIZE]; int top; } Stack; void init(Stack *stack) { stack->top = -1; } int isEmpty(Stack *stack) { return stack->top == -1; } int isFull(Stack *stack) { return stack->top == MAX_SIZE - 1; } void push(Stack *stack, int value) { if (isFull(stack)) { printf("Stack is full\n"); return; } stack->top++; stack->arr[stack->top] = value; } int pop(Stack *stack) { if (isEmpty(stack)) { printf("Stack is empty\n"); return -1; } int value = stack->arr[stack->top]; stack->top--; return value; } int peek(Stack *stack) { if (isEmpty(stack)) { printf("Stack is empty\n"); return -1; } return stack->arr[stack->top]; } int main() { Stack stack; init(&stack); push(&stack, 10); push(&stack, 20); push(&stack, 30); printf("Top element: %d\n", peek(&stack)); printf("Popped element: %d\n", pop(&stack)); printf("Popped element: %d\n", pop(&stack)); printf("Popped element: %d\n", pop(&stack)); printf("Is stack empty: %d\n", isEmpty(&stack)); return 0; }
这段代码定义了一个栈结构体,包括一个整型数组和栈顶指针。使用init
函数初始化栈,isEmpty
和isFull
函数判断栈是否为空或满。push
函数用于入栈,pop
函数用于出栈,peek
函数用于获取栈顶元素但不出栈。在main
函数中演示了栈的基本操作。