diff --git a/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Data/Algo_6_51.txt b/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Data/Algo_6_51.txt index be56cc6..759451e 100644 --- a/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Data/Algo_6_51.txt +++ b/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Data/Algo_6_51.txt @@ -1 +1 @@ -С*/*+a^^b^^-c^^d^^e^^-g^^h^^ \ No newline at end of file +С*/-+a^^b^^-c^^d^^e^^-g^^h^^ \ No newline at end of file diff --git a/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Question-6.51-main.c b/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Question-6.51-main.c index 25016d9..379a2c2 100644 --- a/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Question-6.51-main.c +++ b/CFree/▼配套习题解析/▼06 树和二叉树/▼习题测试文档-06/Question-6.51-main.c @@ -5,7 +5,6 @@ /* ԭ */ void Algo_6_51(BiTree T); Status IsOperator_6_51(char c); -Status LowPriority_6_51(char a, char b); int main(int argc, char *argv[]) { @@ -38,9 +37,10 @@ void Algo_6_51(BiTree T) if(T) { if(T->lchild) - { - if(IsOperator_6_51(T->lchild->data) && LowPriority_6_51(T->lchild->data, T->data)) - { //ǰDzȼڵǰ + { + // DZʽ + if(IsOperator_6_51(T->lchild->data)) + { printf("("); Algo_6_51(T->lchild); printf(")"); @@ -53,8 +53,9 @@ void Algo_6_51(BiTree T) if(T->rchild) { - if(IsOperator_6_51(T->rchild->data) && LowPriority_6_51(T->rchild->data, T->data)) - { //ǰҺDzȼڵǰ + // DZʽ + if(IsOperator_6_51(T->rchild->data)) + { printf("("); Algo_6_51(T->rchild); printf(")"); @@ -72,11 +73,3 @@ Status IsOperator_6_51(char c) // else return ERROR; } - -Status LowPriority_6_51(char a, char b) //ȷaȼǷb -{ - if((a=='+' || a=='-') && (b=='*' || b=='/')) - return TRUE; - else //abͬȼʱҲΪaȼϸ - return ERROR; -} diff --git a/CLion/ExerciseBook/06.51/06.51.c b/CLion/ExerciseBook/06.51/06.51.c index 5b3809d..c7418f6 100644 --- a/CLion/ExerciseBook/06.51/06.51.c +++ b/CLion/ExerciseBook/06.51/06.51.c @@ -10,9 +10,6 @@ void Algo_6_51(BiTree T); // 判断字符c是否为操作符 Status IsOperator(char c); -// 判断两个操作符的优先级 -Status Priority(char a, char b); - int main(int argc, char* argv[]) { BiTree T; @@ -40,8 +37,8 @@ void Algo_6_51(BiTree T) { } if(T->lchild != NULL) { - // 当前结点的左孩子是操作符且优先级低于当前结点 - if(IsOperator(T->lchild->data) && Priority(T->lchild->data, T->data) < 0) { + // 左子树是表达式,则添加括号 + if(IsOperator(T->lchild->data)) { printf("("); Algo_6_51(T->lchild); printf(")"); @@ -53,8 +50,8 @@ void Algo_6_51(BiTree T) { printf("%c", T->data); if(T->rchild != NULL) { - // 当前结点的右孩子是操作符且优先级低于当前结点 - if(IsOperator(T->rchild->data) && Priority(T->rchild->data, T->data) < 0) { + // 右子树是表达式,则添加括号 + if(IsOperator(T->rchild->data)) { printf("("); Algo_6_51(T->rchild); printf(")"); @@ -72,19 +69,3 @@ Status IsOperator(char c) { return ERROR; } } - -// 判断两个操作符的优先级 -Status Priority(char a, char b) { - // a的优先级低 - if((a == '+' || a == '-') && (b == '*' || b == '/')) { - return -1; - - // a的优先级高 - } else if((a == '*' || a == '/') && (b == '+' || b == '-')) { - return 1; - - // 优先级相同 - } else { - return 0; - } -} diff --git a/CLion/ExerciseBook/06.51/TestData.txt b/CLion/ExerciseBook/06.51/TestData.txt index e664c85..9c3cccb 100644 --- a/CLion/ExerciseBook/06.51/TestData.txt +++ b/CLion/ExerciseBook/06.51/TestData.txt @@ -1 +1 @@ -先序序列→*/*+a^^b^^-c^^d^^e^^-g^^h^^ \ No newline at end of file +先序序列→*/-+a^^b^^-c^^d^^e^^-g^^h^^ \ No newline at end of file diff --git a/Dev-C++/ExerciseBook/06.51/06.51.cpp b/Dev-C++/ExerciseBook/06.51/06.51.cpp index eb334e8..a38c29f 100644 --- a/Dev-C++/ExerciseBook/06.51/06.51.cpp +++ b/Dev-C++/ExerciseBook/06.51/06.51.cpp @@ -10,23 +10,20 @@ void Algo_6_51(BiTree T); // жַcǷΪ Status IsOperator(char c); -// жȼ -Status Priority(char a, char b); - int main(int argc, char* argv[]) { BiTree T; - + printf("УT...\n"); InitBiTree(&T); CreateBiTree(&T, "TestData.txt"); PrintTree(T); printf("\n"); - + printf("ʽ"); Algo_6_51(T); printf("\n"); - + return 0; } @@ -38,10 +35,10 @@ void Algo_6_51(BiTree T) { if(T == NULL) { return; } - + if(T->lchild != NULL) { - // ǰDzȼڵǰ - if(IsOperator(T->lchild->data) && Priority(T->lchild->data, T->data) < 0) { + // DZʽ + if(IsOperator(T->lchild->data)) { printf("("); Algo_6_51(T->lchild); printf(")"); @@ -49,12 +46,12 @@ void Algo_6_51(BiTree T) { Algo_6_51(T->lchild); } } - + printf("%c", T->data); - + if(T->rchild != NULL) { - // ǰҺDzȼڵǰ - if(IsOperator(T->rchild->data) && Priority(T->rchild->data, T->data) < 0) { + // DZʽ + if(IsOperator(T->rchild->data)) { printf("("); Algo_6_51(T->rchild); printf(")"); @@ -73,18 +70,3 @@ Status IsOperator(char c) { } } -// жȼ -Status Priority(char a, char b) { - // aȼ - if((a == '+' || a == '-') && (b == '*' || b == '/')) { - return -1; - - // aȼ - } else if((a == '*' || a == '/') && (b == '+' || b == '-')) { - return 1; - - // ȼͬ - } else { - return 0; - } -} diff --git a/Dev-C++/ExerciseBook/06.51/TestData.txt b/Dev-C++/ExerciseBook/06.51/TestData.txt index e53e33a..667d916 100644 --- a/Dev-C++/ExerciseBook/06.51/TestData.txt +++ b/Dev-C++/ExerciseBook/06.51/TestData.txt @@ -1 +1 @@ -С*/*+a^^b^^-c^^d^^e^^-g^^h^^ +С*/-+a^^b^^-c^^d^^e^^-g^^h^^ diff --git a/VisualC++/ExerciseBook/06.51/06.51.c b/VisualC++/ExerciseBook/06.51/06.51.c index eb334e8..cb1fba3 100644 --- a/VisualC++/ExerciseBook/06.51/06.51.c +++ b/VisualC++/ExerciseBook/06.51/06.51.c @@ -10,9 +10,6 @@ void Algo_6_51(BiTree T); // жַcǷΪ Status IsOperator(char c); -// жȼ -Status Priority(char a, char b); - int main(int argc, char* argv[]) { BiTree T; @@ -40,8 +37,8 @@ void Algo_6_51(BiTree T) { } if(T->lchild != NULL) { - // ǰDzȼڵǰ - if(IsOperator(T->lchild->data) && Priority(T->lchild->data, T->data) < 0) { + // DZʽ + if(IsOperator(T->lchild->data)) { printf("("); Algo_6_51(T->lchild); printf(")"); @@ -53,8 +50,8 @@ void Algo_6_51(BiTree T) { printf("%c", T->data); if(T->rchild != NULL) { - // ǰҺDzȼڵǰ - if(IsOperator(T->rchild->data) && Priority(T->rchild->data, T->data) < 0) { + // DZʽ + if(IsOperator(T->rchild->data)) { printf("("); Algo_6_51(T->rchild); printf(")"); @@ -72,19 +69,3 @@ Status IsOperator(char c) { return ERROR; } } - -// жȼ -Status Priority(char a, char b) { - // aȼ - if((a == '+' || a == '-') && (b == '*' || b == '/')) { - return -1; - - // aȼ - } else if((a == '*' || a == '/') && (b == '+' || b == '-')) { - return 1; - - // ȼͬ - } else { - return 0; - } -} diff --git a/VisualC++/ExerciseBook/06.51/TestData.txt b/VisualC++/ExerciseBook/06.51/TestData.txt index be56cc6..759451e 100644 --- a/VisualC++/ExerciseBook/06.51/TestData.txt +++ b/VisualC++/ExerciseBook/06.51/TestData.txt @@ -1 +1 @@ -С*/*+a^^b^^-c^^d^^e^^-g^^h^^ \ No newline at end of file +С*/-+a^^b^^-c^^d^^e^^-g^^h^^ \ No newline at end of file diff --git a/VisualC++/ExerciseBook/ExerciseBook.sdf b/VisualC++/ExerciseBook/ExerciseBook.sdf index ca2ffc6..9b2851f 100644 Binary files a/VisualC++/ExerciseBook/ExerciseBook.sdf and b/VisualC++/ExerciseBook/ExerciseBook.sdf differ diff --git a/VisualC++/ExerciseBook/ExerciseBook.suo b/VisualC++/ExerciseBook/ExerciseBook.suo index 1fb1202..fa4c2ab 100644 Binary files a/VisualC++/ExerciseBook/ExerciseBook.suo and b/VisualC++/ExerciseBook/ExerciseBook.suo differ