#54789: C解法參考(附帶註解


fred1090037@gmail.com (陳昱丞)


#include <stdio.h>

 

// push 函式:把元素放到 stack 頂端

void push(int);

 

// stack 陣列(用來存資料)

int stack[100000];

 

// top 指向目前 stack 最上面的元素位置

// -1 代表 stack 是空的

int top = -1;

 

int main()

{

    int d;        // 操作次數

    int i;

    int action;  // 操作種類 (1,2,3)

    int num;     // 要 push 的數字

    

    // 讀入操作次數

    scanf("%d", &d);

    

    // 執行 d 次操作

    for(i = 0; i < d; i++){

        

        // 讀取操作種類

        scanf("%d", &action);

        

        switch(action){

            

            case 1:

                // 操作 1:push

                // 再讀一個數字

                scanf("%d", &num);

                

                // 呼叫 push,把數字放進 stack

                push(num);

                break;

            

            case 2:

                // 操作 2:輸出 stack 最上面的元素

                

                // 如果 stack 是空的

                if(top == -1){

                    printf("-1\n");

                    break;

                }

                else{

                    // 輸出最上面的元素(但不刪)

                    printf("%d\n", stack[top]);

                    break;

                }

            

            case 3:

                // 操作 3:刪除最上面的元素(pop)

                

                // 如果不是空的才刪

                if(top != -1){

                    top--;   // top 往下移一格(等於刪除)

                }

                break;  // 建議加上,避免未來出錯

        }

    }

 

    return 0;

}

 

// push 函式實作

void push(int a){

    

    // 先把 top 往上移,再放入資料

    // 例如:top=-1 → 變成 0 → 放入 stack[0]

    stack[++top] = a;

}

 

🔴 若不是一次貼上輸出內容的話會出現一邊輸入一邊輸出的情況

(但結果AC