定義表達式結構類型,例如:
typedef?struct?雲酸
{
//如果是單次運算,比如1+2,那麽num 1 = 1;num2 = 2
int?num 1;?//左子運算符為0時直接取此值。
int?num2?//右子運算符為0時直接取此值。如果為空,則只有壹個數值運算。
struct?雲算?*父親;//父親:如果上層有表達式,指向上層。
struct?雲算?*兄弟;//兄弟:如果有其他同級表達式,指向表達式結構。
//如果是復合運算,為它創建壹個左子和壹個右子,指向子,讓子指向父。
struct?雲算?*左;//左邊的兒子
struct?雲算?*對;//對兒子
夏爾?FH;//操作符號
} YS;根據優先級,分解多個運算符的公式,如2 ^ 2+(√4-1)。
從運算順序最低的運算符號中找到'+',創建樹頂點結構,FH = '+';父親= NULL兄弟= NULL帶有left =(2 ^ 2)的結構;右=(√4-1)結構;
(2 ^ 2)的結構:FH =“”;num 1 = 2;num2 = 2父=最頂層結構;有兄弟的結構=(√4-1);Left=新節點fh設置為0;右=新節點fh設置為0;
(√4-1)的結構:FH = '-';num 2 = 1;父=最頂層結構;結構同brother=(2^2 2);left=√4的結構;右=新節點fh設置為0;
√4的結構:FH = '√';num 1 = 4;有父的結構=(√4-1);兄弟= NULLLeft=新節點fh設置為0;右=空;
以此類推,以上只是展示了樹形結構的建立。
您解析字符串,從操作順序中的最後壹個字符開始拆分並創建樹的頂部節點,然後依次向下構建樹。
最後,遞歸函數或循環可用於遍歷樹的節點進行操作。