📄 5_1_4 树的编码实现 - 《多任务下的数据结构与算法》 - 免费试读 - book_csdn_net.htm
字号:
return CAPI_FAILED</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> }</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> return
DoubleList_InsertTail( pTree->pSubTreeList, (void *)pSubTree )</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">}</SPAN></P>
<P class=4><SPAN lang=EN-US>/** </SPAN><SPAN
style="FONT-FAMILY: 华康简宋">树的删除子树函数</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
TREE *pTree</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">树指针</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
TREE *pSubTree</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">子树指针</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
DESTROYFUNC LeafDestroyFunc</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">叶子释放函数</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
DESTROYFUNC PropDestroyFunc</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">属性释放函数</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @return
INT</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">返回</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">CAPI_FAILE</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">表示失败</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">返回</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">CAPI_SUCCESS</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">表示成功</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">*/</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><STRONG><SPAN lang=EN-US
style="FONT-SIZE: 9pt">INT Tree_RemoveSubTree( TREE *pTree, TREE
*pSubTree, </SPAN></STRONG></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><STRONG><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
DESTROYFUNC LeafDestroyFunc,</SPAN></STRONG></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><STRONG><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
DESTROYFUNC PropDestroyFunc )</SPAN></STRONG></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">{</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> DOUBLELIST
*pList</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
DOUBLENODE *pNode</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> if ( pTree ==
NULL || pSubTree == NULL || LeafDestroyFunc == NULL </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
|| PropDestroyFunc == NULL)</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> {</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
return CAPI_FAILED</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> }</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> pList =
pTree->pSubTreeList</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> if ( pList ==
NULL ) </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> {</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
return CAPI_FAILED</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> }</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> /*
</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">遍历子树链表查找对应的子树进行删除</SPAN><SPAN
lang=EN-US style="FONT-SIZE: 9pt"> */</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
DoubleList_EnumBegin(pList)</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> while ( (pNode
= DoubleList_EnumNode(pList) ) != NULL ) </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> {</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
if ( (TREE *)(pNode->pData) == pSubTree )</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
{</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
pNode = DoubleList_PopNode(pList, pNode)</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
Tree_Destroy( (TREE *)(pNode->pData), LeafDestroyFunc,</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
PropDestroyFunc )</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
free(pNode)</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
break</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
}</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> }</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> return
CAPI_SUCCESS</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN><SPAN
lang=EN-US style="FONT-SIZE: 9pt"> </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">}</SPAN></P>
<P class=4 style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US>/**
</SPAN><SPAN style="FONT-FAMILY: 华康简宋">树的拷贝函数,采用先序遍历算法进行拷贝</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
TREE *pTree</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">树指针</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
COPYFUNC LeafCopyFunc</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">叶子拷贝函数</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> </SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @param
COPYFUNC PropCopyFunc</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">属性拷贝函数</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> @return
TREE *</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.2pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋; LETTER-SPACING: -0.1pt">—</SPAN><SPAN
style="FONT-SIZE: 9pt; FONT-FAMILY: 华康简宋">拷贝后的新的树的指针</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14.5pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">*/</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><STRONG><SPAN lang=EN-US
style="FONT-SIZE: 9pt">TREE *Tree_Copy( TREE *pTree, COPYFUNC
LeafCopyFunc, </SPAN></STRONG></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><STRONG><SPAN lang=EN-US
style="FONT-SIZE: 9pt">
COPYFUNC PropCopyFunc)</SPAN></STRONG></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt">{</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> TREE
*pNewTree</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">;</SPAN></P>
<P class=MsoNormal style="LINE-HEIGHT: 14pt"><SPAN lang=EN-US
style="FONT-SIZE: 9pt"> DOUBLELIST
*pNewList</SPAN><SPAN style="FON
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -