中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言入棧出棧代碼怎么寫

小億
309
2023-12-12 16:28:14
欄目: 編程語言

以下是一個簡單的 C 語言實現棧的代碼示例:

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

#define MAX_SIZE 100

// 定義棧結構
typedef struct {
    int data[MAX_SIZE];
    int top;  // 棧頂指針
} Stack;

// 初始化棧
void initStack(Stack *s) {
    s->top = -1;
}

// 判斷棧是否為空
bool isEmpty(Stack *s) {
    return s->top == -1;
}

// 判斷棧是否已滿
bool isFull(Stack *s) {
    return s->top == MAX_SIZE - 1;
}

// 入棧
void push(Stack *s, int value) {
    if (isFull(s)) {
        printf("Stack overflow\n");
        return;
    }
    
    s->top++;
    s->data[s->top] = value;
}

// 出棧
int pop(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack underflow\n");
        return -1;
    }
    
    int value = s->data[s->top];
    s->top--;
    return value;
}

// 獲取棧頂元素
int peek(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack underflow\n");
        return -1;
    }
    
    return s->data[s->top];
}

// 打印棧中的元素
void printStack(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack is empty\n");
        return;
    }
    
    printf("Stack elements: ");
    for (int i = 0; i <= s->top; i++) {
        printf("%d ", s->data[i]);
    }
    printf("\n");
}

int main() {
    Stack stack;
    initStack(&stack);
    
    push(&stack, 10);
    push(&stack, 20);
    push(&stack, 30);
    
    printStack(&stack);  // 輸出:Stack elements: 10 20 30
    
    int poppedValue = pop(&stack);
    printf("Popped value: %d\n", poppedValue);  // 輸出:Popped value: 30
    
    int topValue = peek(&stack);
    printf("Top value: %d\n", topValue);  // 輸出:Top value: 20
    
    return 0;
}

上述代碼中,首先定義了一個結構體 Stack,包含一個數組 data 作為棧的存儲空間,以及一個整型變量 top 作為棧頂指針。

然后,定義了一些棧的操作函數:initStack 用于初始化棧,isEmptyisFull 用于判斷棧是否為空或已滿,push 用于入棧,pop 用于出棧,peek 用于獲取棧頂元素,以及 printStack 用于打印棧中的元素。

main 函數中,首先通過調用 initStack 初始化了一個棧 stack,然后通過調用 push 將元素壓入棧中,再通過調用 printStack 打印棧中的元素。

接著,通過調用 pop 函數將棧頂元素出棧,并打印出棧的元素值。

最后,通過調用 peek 函數獲取棧頂元素值,并打印棧頂元素。

0
黔江区| 金坛市| 临城县| 古交市| 漳平市| 蓬溪县| 民权县| 靖江市| 楚雄市| 株洲县| 本溪市| 察雅县| 孙吴县| 宁强县| 建瓯市| 平昌县| 舒兰市| 洞口县| 曲麻莱县| 五河县| 韶关市| 博湖县| 双城市| 平和县| 云和县| 罗源县| 湖口县| 平陆县| 河西区| 藁城市| 开阳县| 定安县| 金塔县| 浦北县| 梨树县| 安康市| 乌拉特前旗| 绥棱县| 彝良县| 体育| 明光市|