亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C語言怎么用棧實現四則運算原理

小億
157
2024-05-25 09:43:16
欄目: 編程語言

棧可以用來實現四則運算的計算過程,具體原理如下:

  1. 將中綴表達式轉換為后綴表達式:使用棧來將中綴表達式轉換為后綴表達式。遍歷中綴表達式的每個元素,如果是數字直接輸出,如果是操作符,則判斷其優先級和棧頂操作符的優先級,根據優先級進行入棧或出棧操作,直到滿足順序后將操作符入棧。

  2. 計算后綴表達式:使用棧來計算后綴表達式。遍歷后綴表達式的每個元素,如果是數字則入棧,如果是操作符則從棧中取出相應數量的操作數進行計算,并將結果入棧。

通過以上步驟,可以使用棧來實現四則運算的計算過程。以下是一個簡單的C語言代碼示例:

#include <stdio.h>
#include <stdlib.h>

// 定義棧結構
typedef struct {
    int top;
    int capacity;
    int *array;
} Stack;

// 創建棧
Stack* createStack(int capacity) {
    Stack* stack = (Stack*)malloc(sizeof(Stack));
    stack->top = -1;
    stack->capacity = capacity;
    stack->array = (int*)malloc(stack->capacity * sizeof(int));
    return stack;
}

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

// 入棧
void push(Stack* stack, int data) {
    stack->array[++stack->top] = data;
}

// 出棧
int pop(Stack* stack) {
    return stack->array[stack->top--];
}

// 計算后綴表達式
int evaluatePostfix(char* exp) {
    Stack* stack = createStack(100);
    int i = 0;
    int result = 0;

    while (exp[i] != '\0') {
        if (exp[i] >= '0' && exp[i] <= '9') {
            push(stack, exp[i]-'0');
        } else {
            int operand2 = pop(stack);
            int operand1 = pop(stack);
            switch(exp[i]) {
                case '+':
                    push(stack, operand1 + operand2);
                    break;
                case '-':
                    push(stack, operand1 - operand2);
                    break;
                case '*':
                    push(stack, operand1 * operand2);
                    break;
                case '/':
                    push(stack, operand1 / operand2);
                    break;
            }
        }
        i++;
    }

    result = pop(stack);
    free(stack->array);
    free(stack);
    return result;
}

int main() {
    char exp[] = "34+5*";
    printf("Result: %d\n", evaluatePostfix(exp));

    return 0;
}

以上代碼演示了如何使用棧來計算后綴表達式,通過這種方式可以實現四則運算的計算過程。

0
丹寨县| 项城市| 安图县| 武隆县| 喀喇| 建瓯市| 通许县| 芦溪县| 三明市| 阜阳市| 盐山县| 墨脱县| 诸暨市| 景洪市| 阜南县| 兴业县| 高淳县| 老河口市| 温宿县| 临汾市| 枝江市| 云安县| 海城市| 东阳市| 双桥区| 湘潭县| 太康县| 墨竹工卡县| 合山市| 澄迈县| 富平县| 定陶县| 柘荣县| 阿合奇县| 堆龙德庆县| 昭苏县| 永顺县| 图们市| 南岸区| 宁夏| 元阳县|