看了你的问题,我想你有一点没有搞明白,就是typedef是干什么用的,用typedef来定义结构体每一个名称到底表示什么意思。我简单的跟你讲讲。
首先讲讲typedef:typedef的作用就是定义一个别名,也就是为原来的名字定义一个新的名字,比如说你不想用int表示一个整数,那么你可以自己定义你自己的表示int类型的关键字
typedef int myint;这样你以后凡是遇到需要写int的地方,你都可以用myint来替代了。
typedef知道了以后,再来看看typedef定义的结构体:加入你定义一个结构体叫做mystruct,那么你可以这样定义
typedef struct mystruct{ ----------1
int data; ----------2
struct mystruct *next; ----------3
}mystruct, *mys; -----------4
我们先来看看第一行 typedef是将一个名字改写成另外一个名字,所以第一行将struct mystruct 用第四行的mystruct来代替了。这就表示,你以后需要写struct mystruct的地方你都可以直接写成mystruct了。第四行后面的mys表示什么意思呢,你可以先忽略掉结构体内部的定义,直接看第一行和第四行,typedef struct mystruct{ }mystruct, *mys;就是表示说struct mystruct *用mys表示了。就是说mys表示的是mystruct这个结构体的一个指针了。
知道了上面讲的东西,那么你的问题也就好理解了。
BitNode表示的是你定义的这个结构体的一个别名,你可以像使用int,char这些表示数据类型的关键字来使用这个BitNode。比如说,你定义一个结点,你可以这样定义:BitNode node;
BitTree则表示的是你定义的这个结构体的一个指针。你可以像定义其他指针类型来定义这个结构体的指针,比如说,你要定义一个指向这个类型的指针,则可以这样定义:BitTree tree;这个定义等价于:BitNode *tree;。
BiTNode *q,*p=*T; 《—— 这一行,这个地方p表示一个BitNode类型的指针,而T表示的是BitTree类型的指针,而*T则是BitTree类型,也就是BitNode *类型了。所以*p=*T表示p指向的是T的值。
用queueptr定义front 和rear是什么意思?
就是说queueptr表示的是你定义的结构queuenode这个结构的一个指针,等价于queuenode *。所以说用queueptr定义front和rear表示的是定义两个queuenode类型的指针。
数据结构中队列有前有后,front和rear是队列的头指针和尾指针
首行typedef struct BiTNode中的BiTNode相当于数据类型(如int,float等),第五行的BiTNode,*BiTree相当于类型的变量