下面算法實現(xiàn),用一棵二叉樹中的結(jié)點建立一個按關(guān)鍵字值從小到大次序排列的帶表頭結(jié)點的雙向循環(huán)鏈表。二叉樹的結(jié)點結(jié)構(gòu)如下所示:
其中,p是指向結(jié)點的指針;p->key表示結(jié)點的關(guān)鍵字域,p->left和p->right分別表示結(jié)點的左、右孩子的指針域。
void fromtreetolist(p,l)
/*p,h是指向二叉樹中結(jié)點的指針,*/
/*l是指向雙向循環(huán)鏈表表頭結(jié)點的指針*/
{if (p!=NULL)
{ fromtreetolist(p->left,l);
fromtreetolist(p-> right,l);
h=l;
while (h->right!=l)&&(h->right->key
p->right=h->right;
p->left=h;
();
h->rihght=p;
}
}
void buildlisttree(root,l)
/*root是指向二叉樹根結(jié)點的指針,*/
/*l是指向雙向循環(huán)鏈表表頭結(jié)點的指針*/
{l=(struct nodetype *)malloc(sizeof(struct nodetype));
l->left=l;
l->right=l;
fromtreetolist(root,l);
}
您可能感興趣的試卷
你可能感興趣的試題
![](https://static.ppkao.com/ppmg/img/appqrcode.png)
最新試題
二叉樹的二叉鏈表類型定義如下:閱讀下列算法,并回答問題:(1)該算法的功能是什么?(2)以下算法功能是否等價于上面的算法?
已知帶頭結(jié)點的鏈隊列指針Q,則該隊列做新元素結(jié)點s進隊操作的語句是()
采用鄰接矩陣存儲n個頂點e條邊的無向圖,其鄰接矩陣的大小為()。
則該隊列中元素個數(shù)為()
順序表中有10個數(shù)據(jù)元素,若第一個元素的存儲地址是1000,則最后一個元素地址是1036,第5個元素的地址是()
當需要用一個形式參數(shù)直接改變對應(yīng)實參的值時,該形式參數(shù)應(yīng)說明為()
下列可以直接用循環(huán)結(jié)構(gòu)即可將遞歸轉(zhuǎn)換為非遞歸的是()
某圖的鄰接表存儲結(jié)構(gòu)如下圖所示,則從6號點出發(fā),深度優(yōu)先遍歷的序列是()
只要無向圖中有權(quán)重相同的邊,其最小生成樹就不可能唯一。
已知帶頭結(jié)點的鏈隊列指針Q,則該非空隊列取隊頭元素操作的語句是()