更新:thanx求助!这是我的错误。我看到来自"数据结构和算法分析的代码:在c"但我误解了它,我试过并且代码报告了错误,所以也许我没有正确使用它。也许代码就像Exmaple一样。我在后面的页面中找到了代码,这就是我的想法。问题解决了。
-----------原始问题: 是什么区别:
typedef struct node *ptr;
typedef struct ptr tree;
和
typedef ptr tree?
我们可以使用第二个创建列表,我们可以用这种方式定义B树吗?
如果没有,那有什么区别? (感谢)
答案 0 :(得分:2)
首先,如果struct
已经定义,那么你真的不必写node
这个词,所以以下情况很好:
struct node
{
};
typedef node *nptr; //same result as typedef struct node *nptr;
nptr nodePointer = new node();
但是,您可以使用typedef struct
语法,如下所示:
typedef struct {int first; int second;} S, *sPtr;
sPtr pointerToS; //same as S * pointerToS
现在,在您的示例中,您有
typedef struct node *ptr;
typedef struct ptr tree;
第一行表示ptr
现在表示a pointer to node
。第二行基本上是"请从现在开始将#em> ptr 结构称为树"。但是,ptr
是指向node
的指针,而不是struct
的指针,这就是为什么您会收到与using typedef-name 'ptr' after 'struct'
类似的错误。
该行
typedef ptr tree;
另一方面说,"从现在开始,请打电话给 ptr 一个树",无论ptr
是什么,所以编译得很好。