ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
if((str[i]=='+' || str[i]=='-') && i!=0)
{
// операция '+' или '–' найдена, создаем
// узел дерева для этой операции
next=new Tree;
next->operation=str[i];
// левый операнд – выражение, находящееся
// слева от i-го символа, оно может
// содержать все виды операций (level=0)
// осуществляем рекурсивный вызов для
// построения поддерева этого выражения
next->left=CreateTree(str,0,i);
// правый операнд – выражение,
// находящееся справа от i-го символа,
// оно может содержать только
// операции '*' и '/' (level=1)
// осуществляем рекурсивный вызов для
// построения поддерева этого выражения
next->right=CreateTree(str+i+1,1,
len-i-1);
}
else
// операции '+' и '–' не найдены,
// выражение может содержать только
// операции '*' и '/' (level=1)
// осуществляем рекурсивный вызов для
// построения поддерева выражения
next=CreateTree(str,1, len); break;
// выражение может содержать операции '*', '/'
case 1:
// ищем позицию первой с конца
// операции '*' или '/'
while(i!=0 && str[i]!='*' && str[i]!='/') i--;
if(str[i]=='*' || str[i]=='/')
{
// операция '*' или '/' найдена, создаем
// новый узел дерева для этой операции
next=new Tree;
next->operation=str[i];
// левый операнд – выражение, находящееся
// слева от i-го символа, оно может содержать
// операции '*' и '/' (level=1)
102
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
if((str[i]=='+' || str[i]=='-') && i!=0)
{
// операция '+' или '–' найдена, создаем
// узел дерева для этой операции
next=new Tree;
next->operation=str[i];
// левый операнд – выражение, находящееся
// слева от i-го символа, оно может
// содержать все виды операций (level=0)
// осуществляем рекурсивный вызов для
// построения поддерева этого выражения
next->left=CreateTree(str,0,i);
// правый операнд – выражение,
// находящееся справа от i-го символа,
// оно может содержать только
// операции '*' и '/' (level=1)
// осуществляем рекурсивный вызов для
// построения поддерева этого выражения
next->right=CreateTree(str+i+1,1,
len-i-1);
}
else
// операции '+' и '–' не найдены,
// выражение может содержать только
// операции '*' и '/' (level=1)
// осуществляем рекурсивный вызов для
// построения поддерева выражения
next=CreateTree(str,1, len); break;
// выражение может содержать операции '*', '/'
case 1:
// ищем позицию первой с конца
// операции '*' или '/'
while(i!=0 && str[i]!='*' && str[i]!='/') i--;
if(str[i]=='*' || str[i]=='/')
{
// операция '*' или '/' найдена, создаем
// новый узел дерева для этой операции
next=new Tree;
next->operation=str[i];
// левый операнд – выражение, находящееся
// слева от i-го символа, оно может содержать
// операции '*' и '/' (level=1)
102
Страницы
- « первая
- ‹ предыдущая
- …
- 100
- 101
- 102
- 103
- 104
- …
- следующая ›
- последняя »
