91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
新余市| 新营市| 双城市| 九龙县| 共和县| 庆阳市| 敦煌市| 昭通市| 姜堰市| 华安县| 台湾省| 金门县| 涿州市| 平江县| 林芝县| 余姚市| 濮阳县| 泸西县| 棋牌| 舒城县| 石渠县| 固原市| 吴忠市| 呼和浩特市| 铁岭市| 阜宁县| 五河县| 温州市| 策勒县| 醴陵市| 南靖县| 高尔夫| 喀什市| 南雄市| 苏尼特左旗| 土默特左旗| 屯留县| 甘洛县| 通辽市| 永仁县| 左云县|