溫馨提示×

C語言棧如何進行操作

小樊
94
2024-07-24 20:19:20
欄目: 編程語言

C語言中的棧是一種后進先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),通常用于存儲臨時變量、函數(shù)調(diào)用等。在C語言中,棧通常是通過數(shù)組或鏈表來實現(xiàn)的。

操作棧的基本操作包括:

  1. 壓棧(Push):將數(shù)據(jù)壓入棧頂。
  2. 彈棧(Pop):從棧頂彈出一個數(shù)據(jù)。
  3. 獲取棧頂元素(Top):獲取棧頂?shù)臄?shù)據(jù),但不彈出。
  4. 判斷棧是否為空(isEmpty):判斷棧是否為空。
  5. 獲取棧的大?。⊿ize):獲取棧中元素的個數(shù)。

以下是一個使用數(shù)組實現(xiàn)棧的示例代碼:

#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;
}

在這個示例代碼中,我們定義了一個棧結(jié)構(gòu)體Stack,并實現(xiàn)了基本的壓棧、彈棧、獲取棧頂元素、判斷棧是否為空和獲取棧的大小等操作。我們可以通過調(diào)用這些函數(shù)來操作這個棧。

0