typedef struct BitNode{
int data;
BitNode *lchild,*rchild;
}BitNode,*BiTree;
typedef有取别名的作用,所以BitNode的意思是struct BitNode{...),BiTree的意思是struct BitNode{...)*。
BiTree &T 是取指针地址的意思,如同int &a,取a得地址一样。
BitNode *T 和 BiTree T 是定义结构指针变量。
有这种函数
int insertBST(BiTree &T, int e) {
BiTree p;
if (!searchBST(T, e, NULL, p)) {
BiTree s = (BiTree)malloc(sizeof(BitNode));
s->data = e;
s->lchild = s->rchild = NULL;
if(!p)
T = s;
else if LT(e, p->data) p->lchild = s;
else p->rchild = s;
return TRUE;
}
else return FLASE;
}
它的参数是BiTree &T,这是为了对指针进行修改,而修改一个值,则必须知道它的地址,所以的取指针地址的地址,类似于int a,通过函数修改a,则需int local(int &a),一个道理。你也可以写成int insertBST(BitNode *(&T), int e),那么函数里面的 T->lchild,T->rchild,T->data是做什么的?它们在修改这个T指针,你的T指针一直是NULL,而你让它指向了(BiTree)malloc(sizeof(Node))这个空间!!!即一直在修改这个T指针,调试时你会发现你的T的地址发生了变化。那么你说你是不是要用他的引用啊!
版权声明:本文为wodemaoheise原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。