最近在学习数据结构(c语言),严老师内容很详细,但书中的语言为类C语言。即使弄清楚了算法的理论但当我在实际编程中却发现需要根据c语言的语法修改一些。主要感觉就是书中引用的c++中的引用“&”。在C语言中我一般用函数返回值或者二重指针来进行替代。二叉树线索化及遍历中也运用了这些。分享出来希望能有所借鉴不足之处也希望指出。
typedef enum pointertag{link,thread};
typedef char elemtype;
typedef struct binode
{
elemtype data;
binode* lchild;
binode* rchild;
pointertag ltag,rtag;
}binode,*bithrtree;/*线索二叉树的存储*/
先序创建二叉树
bithrtree precreattree(bithrtree t)
{
elemtype ch;
scanf("%c",&ch);
if(ch==' ')t=NULL;
else
{
if(!(t=(bithrtree)malloc(sizeof(binode))))exit(0);
t->data=ch;
t->ltag=link;
t->rtag=link;/*标志默认为link*/
t->lchild=precreattree(t->lchild);
t->rchild=precreattree(t->rchild);
}
return t;
}/*先序创建线索二叉树*/