c 鏈棧的表示式求值 多位數以及小數求值

2021-09-26 11:15:23 字數 2177 閱讀 7117

部分思想參考了以資料結構教材上的為基礎,進行修改。書上的棧的表示式求值個人認為挺不錯了,比較好理解。

總共有三個檔案,分別時code.h、code.cpp和main.cpp檔案,這三個檔案需要放在同乙個資料夾下

code.h

#include #include #include #include using namespace std;

int n=8;

char a1[9]=;

char a2[8][8]=,,,

,,,,

};typedef struct stack1

stack1,*linkstack1;

typedef struct stack2

stack2,*linkstack2;

void initstack1(linkstack1 &s1);

void initstack2(linkstack2 &s2);

void pushstack1(linkstack1 &s1,char data);

void pushstack2(linkstack2 &s2,double data);

void popstack1(linkstack1 &s1,char &data);

void popstack2(linkstack2 &s2,double &data);

char gettopstack1(linkstack1 s1);

double gettopstack2(linkstack2 s2);

int getindex(char data);

char precede(char data1,char data2);

double operate(double a,char ch,double b);

int numberhandle(int num1,int num2);

void strinsert(char *str,int pos,char data);

void strhandle(char *str);

double expressvalue(char *str,linkstack1 &s1,linkstack2 &s2);

code.cpp(核心**)

#include "code.h"

void initstack1(linkstack1 &s1)

void initstack2(linkstack2 &s2)

void pushstack1(linkstack1 &s1,char data)

void pushstack2(linkstack2 &s2,double data)

void popstack1(linkstack1 &s1,char &data)

void popstack2(linkstack2 &s2,double &data)

char gettopstack1(linkstack1 s1)

double gettopstack2(linkstack2 s2)

int getindex(char data)

return -1;

}char precede(char data1,char data2)

double operate(double a,char ch,double b)

else if(ch=='-')

else if(ch=='*')

else if(ch=='/')

else }

int numberhandle(int num1,int num2)

void strinsert(char *str,int pos,char data)

str[pos]=data;

str[len+1]='\0'; }}

void strhandle(char *str)

else if(str[i]=='.')

else

else

}sch=precede(gettopstack1(s1),str[i]);

switch(sch)

}} return gettopstack2(s2);

}

main.cpp

#include "code.cpp"

int main()

C語言棧 多位數的表示式求和

include include include const char oper 7 define ok 1 define error 0 typedef char selemtype typedef int status typedef struct snode snode,linkstack do...

鏈棧以及中綴表示式轉字尾表示式並求值的鏈棧實現

多鏈棧棧的應用 表示式求值 為了便於操作,採用帶頭結點的單鏈表實現棧,把鍊錶的頭指標作為棧頂指標。採用鏈棧不必預先估計棧的最大容量,只要系統有可用的空間,鏈棧就不會出現溢位的情況。對於鏈棧,使用完畢後,應該釋放其空間。鏈棧的各種基本操作的實現與單鏈表的操作類似。鏈棧分為一般鏈棧和多鏈棧。一般鏈棧型別...

C語言的基於棧實現的表示式求值

一 目的 理解中綴表示式求值的過程 理解中綴轉字尾表示式求值的過程 掌握堆疊的應用 二 問題描述 綴表示式,其中包含括號,加減乘除,乘方等運算,利用中綴表示式,對表示式分析並求值 入的中綴表示式轉換為字尾形式,顯示字尾形式,並通過字尾形式求值 三 資料結構 運算子結構體 typedef struct...