【填空题】
下面算法实现,用一棵二叉树中的结点建立一个按关键字值从小到大次序排列的带表头结点的双向循环链表。二叉树的结点结构如下所示:<br /> <img src="https://nimg.ppkao.com/2018-09/yuanhao/201809171716215515.jpg?sign=3848496735a610611a679aafd3fbe072&t=62d79f53" /><br /> 其中,p是指向结点的指针;p->key表示结点的关键字域,p->left和p->right分别表示结点的左、右孩子的指针域。<br /> void fromtreetolist(p,l)<br /> /*p,h是指向二叉树中结点的指针,*/<br /> /*l是指向双向循环链表表头结点的指针*/<br /> {if (p!=NULL)<br /> { fromtreetolist(p->left,l);<br /> fromtreetolist(p-> right,l);<br /> h=l;<br /> while (h->right!=l)&&(h->right->key<p->key)h=h->right;<br /> p->right=h->right;<br /> p->left=h;<br /> ();<br /> h->rihght=p;<br /> }<br /> }<br /> void buildlisttree(root,l)<br /> /*root是指向二叉树根结点的指针,*/<br /> /*l是指向双向循环链表表头结点的指针*/<br /> {l=(struct nodetype *)malloc(sizeof(struct nodetype));<br /> l->left=l;<br /> l->right=l;<br /> fromtreetolist(root,l);<br /> }</p->