温馨提示×

C语言栈如何进行操作

小樊
83
2024-07-24 20:19:20
栏目: 编程语言

C语言中的栈是一种后进先出(LIFO)的数据结构,通常用于存储临时变量、函数调用等。在C语言中,栈通常是通过数组或链表来实现的。

操作栈的基本操作包括:

  1. 压栈(Push):将数据压入栈顶。
  2. 弹栈(Pop):从栈顶弹出一个数据。
  3. 获取栈顶元素(Top):获取栈顶的数据,但不弹出。
  4. 判断栈是否为空(isEmpty):判断栈是否为空。
  5. 获取栈的大小(Size):获取栈中元素的个数。

以下是一个使用数组实现栈的示例代码:

#include <stdio.h>
#include <stdbool.h>

#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int top;
} Stack;

void init(Stack *s) {
    s->top = -1;
}

void push(Stack *s, int value) {
    if (s->top < MAX_SIZE - 1) {
        s->data[++s->top] = value;
    } else {
        printf("Stack overflow!\n");
    }
}

int pop(Stack *s) {
    if (s->top >= 0) {
        return s->data[s->top--];
    } else {
        printf("Stack is empty!\n");
        return -1;
    }
}

int top(Stack *s) {
    if (s->top >= 0) {
        return s->data[s->top];
    } else {
        printf("Stack is empty!\n");
        return -1;
    }
}

bool isEmpty(Stack *s) {
    return s->top == -1;
}

int size(Stack *s) {
    return s->top + 1;
}

int main() {
    Stack stack;
    init(&stack);

    push(&stack, 1);
    push(&stack, 2);
    push(&stack, 3);

    printf("Top element: %d\n", top(&stack));

    while (!isEmpty(&stack)) {
        printf("%d ", pop(&stack));
    }
    printf("\n");

    return 0;
}

在这个示例代码中,我们定义了一个栈结构体Stack,并实现了基本的压栈、弹栈、获取栈顶元素、判断栈是否为空和获取栈的大小等操作。我们可以通过调用这些函数来操作这个栈。

0