我正在学习使用C语言的数据结构课程。 我正在阅读有关二叉树(更具体地讲,表达式树)中堆栈的某种实现方式
这是节点的结构
{
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
数组在这种情况下的工作方式,索引及全部。
我能详细说明一下吗?预先谢谢你
编辑: 人们似乎对二进制树与堆栈的组合感到困惑。 但是程序正在使用堆栈将给定的后缀表达式转换为表达式树 该程序使用上述参数为我提供了正确的字符串输出。