📄 express.c
字号:
typedef struct
{
int flag; //0 : operator 1: number
string str;
linktable *father;
linktable *son;
linktable *brother;
}linktable;
string linktable_to_expression(linktable *head)
{
linktable *root, *brother, *son;
string express, str1, str2;
root = head;
while(root->son <> NULL)
{
}
}
Status Print_Expression(Bitree T)//按标准形式输出以二叉树存储的表达式
{
if(T->data是字母) printf("%c",T->data);
else if(T->data是操作符)
{
if(!T->lchild||!T->rchild) return ERROR; //格式错误
if(T->lchild->data是操作符&&T->lchild->data优先级低于T->data)
{
printf("(");
if(!Print_Expression(T->lchild)) return ERROR;
printf(")");
} //注意在什么情况下要加括号
else if(!Print_Expression(T->lchild)) return ERROR;
printf("%c",T->data);
if(T->rchild->data是操作符&&T->rchild->data优先级低于T->data)
{
printf("(");
if(!Print_Expression(T->rchild)) return ERROR;
printf(")");
}
else if(!Print_Expression(T->rchild)) return ERROR;
}
else return ERROR; //非法字符
return OK;
}//Print_Expression
typedef struct
{
int flag; //0 : operator 1: number
string data;
linktable *father;
linktable *son;
linktable *brother;
}linktable;
string s = '';
Status Output_Expression(linkTable T) //输出存储的表达式
{
linkTable temp;
if(T->flag ==1) //number
{
s += "(";
s += T->data;
temp = T;
while (!T->brother)
{
s += temp->father->data;
s += T->data;
T = T->brother;
}
T = temp;
s += ")";
}
else if(T->flag == 0) //operator
{
if(!T->son) return ERROR; //格式错误
//s += "(";
if(T->son->flag == 0) //operator
{
s += "(";
if(!Output_Expression(T->son)) return ERROR;
s += ")";
}
else if(!Output_Expression(T->son)) return ERROR;
temp = T;
while(!T->brother)
{
s += temp->father->data;
if(T->brother->flag == 0) //operator
{
if(!Output_Expression(T->brother)) return ERROR;
}
else
{
s += T->brother->data;
}
T = T->brother;
}
T = temp;
}
else return ERROR; //非法字符
return OK;
}//Print_Expression
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -