堆叠为节点阵列

时间:2019-10-21 09:13:37

标签: c arrays data-structures binary-tree

我正在学习使用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数组在这种情况下的工作方式,索引及全部。

我能详细说明一下吗?预先谢谢你

编辑: 人们似乎对二进制树与堆栈的组合感到困惑。 但是程序正在使用堆栈将给定的后缀表达式转换为表达式树 该程序使用上述参数为我提供了正确的字符串输出。

0 个答案:

没有答案