【发布时间】:2010-11-10 21:49:12
【问题描述】:
我的任务是创建一个程序,将((X+3)*(X+4)) 之类的东西变成二叉树,以及其他一些功能。到目前为止,我已经接受了输入,并将其解析为两个堆栈,一个包含操作数,另一个包含运算符。
我现在只是简单地定义了堆栈(所以它们只有一个 nextnode 和 char value.
但是,我似乎在将堆栈中的值添加到我的树中时遇到了问题(因此在定义树时可能存在问题)。
我的堆栈是这样定义的:
typedef struct node
{
char value;
struct node * nextnode;
} node;
我的树已定义:
typedef struct tree
{
node * thisNode;
struct tree *right, *left;
} tree;
我不确定 node* 部分,也许它应该有所不同。
我一直在考虑 2+3 的简单情况。在这种情况下,树的根应该是+,左边是2,右边是3。
+
/\
2 3
如何将堆栈中的内容添加到我的树中?我尝试过使用
root->thisNode = operatorTop;
其中 operatorTop 是运算符堆栈的顶部(定义为node * operatorTop),
但即使是那条简单的线似乎也有段错误。
【问题讨论】:
-
你必须向我们展示一个完整的程序段错误。您的数据结构本质上没有任何问题(除了您将 char 用于 int 并且您正在对命名结构进行类型定义,这并不完全不正确)。
-
这几乎就是我要问的所有问题,是否存在本质上的错误。我忘了给它贴上标签,但这是作业,所以我不想/太/太多帮助。霍根让我走上了正轨,正是这样。
标签: c data-structures tree