Я прохожу курс Data Structures с использованием языка Си. Я читал об определенной реализации стеков в двоичном дереве (точнее, дереве выражений)
Это структура узла
{
struct Node *right,*left;
char data;
} Node;
Следующая функция:
Node * createExpressionTree(char* a,int len)
{
Node *temp;
Node *stack[100];
int top=-1,i=0;
.
.
.
temp->left=pop(stack,&top);
.
.
.
}
Я предполагаю, stack
- это двумерный массив узлов, и top, очевидно, имеет тип int.
Теперь в этой функции:
Node* pop(Node** stack,char *t)
{
Node* temp;
temp=stack[*t];
--*t;
return temp;
}
Я так потерян сейчас. Почему второй аргумент функции типа строка (массив символов), но в вызове функции передается значение int
.
и как *t
работает как индекс для stack
. И в чем смысл --*t;
?
В курсе C, который я выбрал, массивы были покрыты, но я не понимаю, как работает массив stack
в этом случае, индексы и все.
Могу ли я получить разъяснения по поводу вышеизложенного? Заранее спасибо
Редактировать: Люди, похоже, смущены сочетанием бинарных деревьев со стеками. Но программа конвертирует данное постфиксное выражение в дерево выражений с использованием стеков. Программа выдает корректный вывод строки с указанными выше параметрами.