C語言求得表示式的字尾表示式

2021-08-28 17:28:54 字數 2307 閱讀 5079

獲取字尾表示式的原理是用乙個字元陣列來存放字尾表示式,

用乙個棧來暫時存放運算子,入棧出棧和字元陣列的儲存規則為:

一.當字元是運算元,直接存入字元陣列中

二.當字元不是運算元,分三種情況討論

1.字元是『(』:當前字元直接入棧

2.字元是『)』:一直出棧,將出棧的字元存入字元陣列中,直到棧頂元素是『(』時,將棧頂元素出棧,跳出迴圈,當前字元不入棧。

3.字元是運算子:當字元的優先順序比棧頂的優先順序小或相等時,一直出棧,將出棧的運算子存入字元陣列,直到字元的優先順序比棧頂的運算子優先順序大,或者棧為空的時候,停止迴圈,當前字元入棧。

棧結構的編寫:

stack.h

#include"stdlib.h"

typedef int bool;

#define true 1;

#define false 0;

typedef struct datanodedatanode;

typedef struct _stack*stack, _stack;

stack init();

datanode* createnode(char value);

void push(stack stackobj, char value);

char pop(stack stackobj);

bool isempty(stack stackobj);

stack.c

#include"stdlib.h"

#include"stack.h"

stack init()

tmpstack->base = null;

tmpstack->top = null;

return tmpstack;

}datanode* createnode(char value)

tmp->value = value;

tmp->next = null;

return tmp;

}void push(stack stackobj, char value)

datanode* tmp = createnode(value);

if (tmp == null)

tmp->next = stackobj->top;

stackobj->top = tmp;

if (tmp->next == null)

}char pop(stack stackobj)

if (stackobj->top == null)//棧為空

datanode* tmp = stackobj->top;

stackobj->top = stackobj->top->next;

return tmp->value;

}bool isempty(stack stackobj)

if (stackobj->top == null)

return false;

}maintest.c

#include"stdlib.h"

#include"stack.h"

typedef int bool;

#define true 1;

#define false 0;

void pushinbuffer(char* buffer, char value);

//獲取字尾表示式

void getbackcom2()

else

tmp1 = pop(mystack);

pushinbuffer(buffer2, tmp1);}}

else if (*p == 『(』)

else

push(mystack, p);}}

p++;

}while (mystack->top != null)

printf("%s\n",buffer2);

}void pushinbuffer(char buffer, char value)

int len;

len = strlen(buffer);

buffer[len] = value;

buffer[len + 1] = 0;

}bool compare(char new,char top)

void main()

經驗與總結:1.編寫時邏輯一定要先想清楚,不然全是bug。

2.如何在字串後面新增字元:

char buffer[100]="";

len = strlen(buffer);

buffer[len] = value;

buffer[len + 1] = 0;

中綴表示式 字首表示式 字尾表示式

中綴表示式 中綴記法 中綴表示式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處於運算元的中間。中綴表示式是人們常用的算術表示方法。雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。...

中綴表示式 字尾表示式 字首表示式

正如我們常常潛意識認為我們所說的數字都是十進位制,對於數字的其他進製感覺不正確一樣,其實只是我們不熟悉而已,其他進製其實也不過就是一種對資料的表達方式而已。對於我們的表示式也是一樣。eg 表示式2 3 5 7 我們上面所看到的也就是我們平時常用的書寫表示式的方式就是我們所謂的 中綴表示式 字首表示式...

字首表示式 中綴表示式 字尾表示式。

表示式 就是式子。是由數字 算符 數字分組符號 自由量和約束量組成的。人們一般習慣寫出來的式子,叫做中綴表示式。因為在計算機中,不方便表達 數字分組符號。所以 波蘭人發明了一種把去符號化的表示式。字首表示式 字首表示式 沒有括號,算符在前 數字在後。波蘭數學家發明,為了紀念,又叫做波蘭式。跟其對應,...