数据结构-栈5-栈的应用-后缀转中缀
生活随笔
收集整理的這篇文章主要介紹了
数据结构-栈5-栈的应用-后缀转中缀
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#define _CRT_SECURE_NO_WARNINGS
#include"LinkList.c"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>//遇到數字壓棧
//遇到符號,取出棧的第一個元素為右操作符,第二個元素為左操作符。計算完畢后壓棧typedef struct MYNUM {LinkNode node;int val;
}MyNum;int IsNumber(char c)
{return c >= '0' && c <= '9';
}int Caculate(int left,int right,char c)
{int ret = 0;switch (c){case '+':ret = left + right;break;case '-':ret = left - right;break;case '*':ret = left * right;break;case '/':ret = left / right;break;default:break;}return ret;
}int main()
{char* str = "831-5*+";char* p = str;LinkList* stack = Init_linkList();while (*p != '\0'){//如果是數字 直接入棧if (IsNumber(*p)){MyNum* num = (MyNum*)malloc(sizeof(MyNum));num->val = (*p)-'0'; //轉換為數字printf("壓入元素為:%d", num->val);Push_LinkList(stack, (LinkNode*)num);}else {//先從棧中彈出右操作數MyNum* right = (MyNum*)Top_LinkList(stack);int rightNum =right->val;Pop_LinkList(stack);free(right);MyNum* left = (MyNum*)Top_LinkList(stack);int leftNum = left->val;Pop_LinkList(stack);free(left);//結果入棧int ret=Caculate(leftNum, rightNum, *p);MyNum* num = (MyNum*)malloc(sizeof(MyNum));num->val =ret; //轉換為數字Push_LinkList(stack,(LinkNode*)num);}p++;}if (Size_LinkList(stack) == 1){MyNum* num=(MyNum*)Top_LinkList(stack);printf("運算結果為:%d\n", num->val);Pop_LinkList(stack);free(num);}system("pause");return 0;
}
總結
以上是生活随笔為你收集整理的数据结构-栈5-栈的应用-后缀转中缀的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VScode中编写运行C/html文件
- 下一篇: rt-thread怎么使用数码管_三菱F