锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久综合亚洲鲁鲁五月天,久久久WWW免费人成精品,久久久久久精品免费看SSShttp://www.shnenglu.com/tankzhouqiang/category/16140.htmlzh-cnSat, 21 May 2011 00:38:00 GMTSat, 21 May 2011 00:38:00 GMT60鏈鐭礬寰?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146758.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Thu, 19 May 2011 08:44:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146758.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/146758.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/146758.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/146758.html</trackback:ping><description><![CDATA[錛堜竴錛夎開鏉版柉鐗規媺綆楁硶錛堟椂闂村鏉傚害O(n2)錛?br />       榪澃鏂壒鎷夛紙Dijkstra錛夌畻娉曟槸姹傛煇涓簮鐐瑰埌鍏朵綑鍚勯《鐐圭殑鏈鐭礬寰勶紝榪欐槸涓涓寜璺緞闀垮害閫掑鐨勬搴忎駭鐢熸渶鐭礬寰勭殑綆楁硶銆?br />       棣栧厛寮曡繘涓涓緟鍔╁悜閲廌,瀹冪殑姣忎釜鍒嗛噺D[i]琛ㄧず褰撳墠鎵鎵懼埌鐨勪粠濮嬬偣v鍒版瘡涓粓鐐箆i鐨勬渶鐭礬寰勭殑闀垮害銆傚畠鐨勫垵鎬佷負錛氳嫢浠巚鍒皏i鏈夊姬錛屽垯D[i]涓哄姬涓婄殑鏉冨鹼紱鍚﹀垯緗瓺[i]涓烘棤絀峰ぇ銆傛樉鐒訛紝闀垮害涓篋[j]=Min{D[i]|vi灞炰簬V}鐨勮礬寰勫氨鏄粠v鍑哄彂鐨勯暱搴︽渶鐭殑涓鏉℃渶鐭礬寰勩傚洜姝わ紝鍦ㄤ竴鑸儏鍐典笅錛屼笅涓鏉¢暱搴︽鐭殑鏈鐭礬寰勭殑闀垮害蹇呬負D[j]=Min{D[i]|vi 灞炰簬 V-S} 鍏朵腑D[i]鎴栬呬負寮э紙v,vi)涓婄殑鏉冨鹼紝鎴栬呮槸D[k](vk灞炰簬S)鍜屽姬錛坴k,vi錛変笂鐨勬潈鍊間箣鍜屻傜畻娉曟楠ゅ涓嬶細<br />(1)鍋囪鐢ㄥ甫鏉冪殑閭繪帴鐭╅樀arcs鏉ヨ〃紺哄甫鏉冩湁鍚戝浘錛宎rcs[i][j]琛ㄧず寮?vi,vj)涓婄殑鏉冨箋傝嫢(vi,vj)涓嶅瓨鍦紝鍒欑疆arcs[i][j]涓烘棤絀峰ぇ銆係涓哄凡鎵懼埌浠巚鍑哄彂鐨勬渶鐭礬寰勭殑緇堢偣鐨勯泦鍚堬紝瀹冪殑鍒濆鐘舵佷負絀洪泦銆傞偅涔堬紝浠巚鍑哄彂鍒板浘涓婂叾浣欏悇欏剁偣錛堢粓鐐癸級vi,鍙兘杈懼埌鐨勬渶鐭礬寰勯暱搴︾殑鍒濆間負錛?br />D[i]=G.arcs[v][vi],vi灞炰簬V<br />(2)閫夋嫨Vj錛屼嬌寰?br />   D[j]=Min{D[i]|vi 灞炰簬V-S}<br />vj 灝辨槸褰撳墠姹傚緱鐨勪竴鏉′粠v鍑哄彂鐨勬渶鐭礬寰勭殑緇堢偣銆備護<br />   S=S錛點锝涳綂锝?br />(3)   淇敼浠巚鍑哄彂鍒伴泦鍚圴-S涓婁換涓欏剁偣vk鍙揪鐨勬渶鐭礬寰勯暱搴︺傚鏋淒[j]+arcs[j][k]<D[k]鍒欎慨鏀笵[k]涓?D[k]=D[j]+arcs[j][k]<br />(4) 閲嶅鎿嶄綔(2),(3)鍏?n-1嬈°傜敱姝ゆ眰寰椾粠v鍒板浘涓婂叾浣欏悇欏剁偣鐨勬渶鐭礬寰勬槸渚濊礬寰勯暱搴﹂掑鐨勫簭鍒椼?br /><br />錛堜簩錛夊紬媧涗紛寰?Floyd)綆楁硶錛堟椂闂村鏉傚害涓篛(n3)錛?br />寮楁礇浼婂痙錛團loyd錛夌畻娉曟槸姹傚浘涓瘡涓瀵歸《鐐逛箣闂寸殑鏈鐭礬寰勶紝鏃墮棿澶嶆潅搴︿負O(n3).<br />寮楁礇浼婂痙綆楁硶浠嶄粠鍥劇殑甯︽潈閭繪帴鐭╅樀cost鍑哄彂錛屽叾鍩烘湰鎬濇兂鏄?:<br />鍋囪姹備粠欏剁偣vi鍒皏j鐨勬渶鐭礬寰勩傚鏋滀粠vi鍒皏j鏈夊姬錛屽垯浠巚i鍒皏j瀛樺湪涓鏉¢暱搴rcs[i][j]鐨勮礬寰勶紝璇ヨ礬寰勪笉涓瀹氭槸鏈鐭礬寰勶紝灝氶渶榪涜n嬈¤瘯鎺€傞鍏堣冭檻璺緞(vi,v0,vj)鏄惁瀛樺湪錛堝嵆鍒ゅ埆寮э紙vi,v0錛夊拰(v0,vj)鏄惁瀛樺湪)銆?濡傛灉瀛樺湪錛屽垯姣旇緝(vi,vj)鍜?vi,v0,vj)鏄惁瀛樺湪(鍗沖垽鍒姬(vi,v0)鍜?v0,vj)鏄惁瀛樺湪).濡傛灉瀛樺湪錛屽垯姣旇緝(vi,vj)鍜?vi,v0,vj)鐨勮礬寰勯暱搴﹀彇闀垮害杈冪煭鑰呬負浠巚i鍒皏j鐨勪腑闂撮《鐐圭殑搴忓彿涓嶅ぇ浜?鐨勬渶鐭礬寰勩傚亣濡傚湪璺緞涓婂啀澧炲姞涓涓《鐐箆1,涔熷氨鏄錛屽鏋?vi,...v1)鍜?v1...vj)鍒嗗埆涓哄綋鍓嶆壘鍒扮殑涓棿欏剁偣鐨勫簭鍙蜂笉澶т簬0鐨勬渶鐭礬寰勶紝閭d箞錛坴i,...,v1,...vj錛夊氨鏈夊彲鑳芥槸浠巚i鍒皏j鐨勪腑闂撮《鐐圭殑搴忓彿涓嶅ぇ浜?鐨勬渶鐭礬寰勩傚皢瀹冨拰宸茬粡寰楀埌鐨勪粠vi鍒皏j涓棿鐨勯《鐐瑰簭鍙蜂笉澶т簬0鐨勬渶鐭礬寰勭浉姣旇緝錛屼粠涓夊嚭涓棿欏剁偣鐨勫簭鍙蜂笉澶т簬1鐨勬渶鐭礬寰勪箣鍚庯紝鍐嶅鍔犱竴涓《鐐箆2,緇х畫榪涜璇曟帰銆備緷嬈$被鎺ㄣ傚湪涓鑸儏鍐典笅錛岃嫢(vi,...,vk)鍜?vk,...vj)鍒嗗埆鏄粠vi鍒皏k鍜屼粠vk鍒皏j鐨勪腑闂撮《鐐圭殑搴忓彿涓嶅ぇ浜巏-1鐨勬渶鐭礬寰勶紝鍒欏皢(vi,...vk,...vj)鍜屽凡緇忓緱鍒扮殑浠巚i鍒皏j涓斾腑闂撮《鐐瑰簭鍙蜂笉澶т簬k-1鐨勬渶鐭礬寰勭浉姣旇緝錛屽叾闀垮害杈冪煭鑰呬究鏄粠vi鍒皏j鐨勪腑闂撮《鐐圭殑搴忓彿涓嶅ぇ浜巏鐨勬渶鐭礬寰勩傝繖鏍鳳紝鍦ㄧ粡榪噉嬈℃瘮杈冨悗錛屾渶鍚庢眰寰楃殑蹇呮槸浠巚i鍒皏j鐨勬渶鐭礬寰勩?br />鐜板畾涔変竴涓猲闃舵柟闃靛簭鍒?br />D(-1),D(0),D(1),...D(k),...D(n-1)<br />鍏朵腑<br />D(-1)[i][j]=G.arcs[i][j].<br />D(k)[i][j]=Min{D(k-1)[i][j],D(k-1)[i][k]+D(k-1)[k][j]}  0<=k<=n-1<br />浠庝笂榪拌綆楀叕寮忓彲瑙侊紝D(1)[i][j]鏄粠vi鍒皏j鐨勪腑闂撮《鐐圭殑搴忓彿涓嶅ぇ浜?鐨勬渶鐭礬寰勭殑闀垮害銆侱(k)[i][j]鏄粠vi鍒皏j鐨勪腑闂撮《鐐圭殑搴忓彿涓嶅ぇ浜巏鐨勬渶鐭礬寰勭殑闀垮害銆侱(n-1)[i][j]灝辨槸浠巚i鍒皏j鐨勬渶鐭礬寰勭殑闀垮害銆?br /><img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/146758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-05-19 16:44 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146758.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏈灝忕敓鎴愭爲http://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146737.html鍛ㄥ己鍛ㄥ己Thu, 19 May 2011 03:09:00 GMThttp://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146737.htmlhttp://www.shnenglu.com/tankzhouqiang/comments/146737.htmlhttp://www.shnenglu.com/tankzhouqiang/archive/2011/05/19/146737.html#Feedback0http://www.shnenglu.com/tankzhouqiang/comments/commentRss/146737.htmlhttp://www.shnenglu.com/tankzhouqiang/services/trackbacks/146737.html
璇嗗埆瀹夊叏杈圭殑瀹氱悊錛氳鍥綠=(V,E)鏄竴涓棤鍚戣繛閫氬浘錛屽茍涓斿湪E涓婂畾涔変簡涓涓叿鏈夊疄鏁板肩殑鍔犳潈鍑芥暟w.璁続鏄疎鐨勪竴涓瓙闆嗭紝瀹冨寘鍚簬G鐨勬煇涓渶灝忕敓鎴愭爲涓傝鍓?S,V-S)鏄疓鐨勪換鎰忎竴涓笉濡ㄥA鐨勫壊錛屼笖杈?u,v)鏄氳繃鍓?S,V-S)鐨勪竴鏉¤交杈癸紝鍒欒竟(u,v)瀵歸泦鍚圓鏉ヨ鏄畨鍏ㄧ殑銆?br />

鎺ㄨ錛氳G=(V,E)鏄竴涓棤鍚戣仈閫氬浘錛屽茍涓斿湪E涓婂畾涔変簡鐩稿簲鐨勫疄鏁板煎姞鏉冨嚱鏁皐.璁続鏄疎鐨勫瓙闆嗭紝騫跺寘鍚簬G鐨勬煇涓鏈灝忕敓鎴愭爲涓傝C=(Vc,Ec)涓烘.鏋桮A=(V,A) 鐨勪竴涓繛閫氬垎鏀傚鏋滆竟鏄繛鎺鍜孏a涓叾浠栨煇鑱旈氬垎鏀殑涓鏉¤交杈癸紝鍒?u,v)瀵歸泦鍚圓鏉ヨ鏄畨鍏?

鍦↘ruskal(鍏嬮瞾鏂崱灝?綆楁硶鍜孭rim(鏅噷濮?綆楁硶
鍦↘ruskal綆楁硶涓紝闆嗗悎A鏄竴涓.鏋楋紝鍔犲叆闆嗗悎A涓殑瀹夊叏杈規繪槸鍥句腑榪炴帴涓や釜涓嶅悓鑱旈氬垎鏀殑鏈灝忔潈杈廣傚湪Prim綆楁硶涓紝闆嗗悎A浠呭艦鎴愬崟媯墊爲錛屾坊鍔犲叆闆嗗悎A鐨勫畨鍏ㄨ竟鎬繪槸榪炴帴鏍戜笌涓涓笉鍦ㄦ爲涓殑欏剁偣鐨勬渶灝忔潈杈廣?br />
Kruskal(鍏嬮瞾鏂崱灝?綆楁硶(O(ElgE))錛?br />璇ョ畻娉曟壘鍑烘.鏋椾腑榪炴帴浠繪剰涓ゆ5鏍戠殑鎵鏈夎竟涓紝鍏鋒湁鏈灝忔潈鍊肩殑杈?u,v)浣滀負瀹夊叏杈癸紝騫舵妸瀹冩坊鍔犲埌姝e湪鐢熼暱鐨勬.鏋椾腑銆傝C1鍜孋2琛ㄧず杈?u,v)榪炴帴鐨勪袱媯墊爲錛屽洜涓?u,v)蹇呮槸榪炴帴C1鍜屽叾浠栨煇媯墊爲鐨勪竴鏉¤交杈癸紝鎵浠ョ敱涓婇潰鎺ㄨ鍙煡錛?u,v)瀵笴1鏉ヨ鏄畨鍏ㄨ竟銆侹ruskal 綆楁硶鍚屾椂涔熸槸涓縐嶈椽蹇冪畻娉曪紝 鍥犱負鍦ㄧ畻娉曠殑姣忎竴姝ヤ腑錛屾坊鍔犲埌媯灄涓殑杈圭殑鏉冨奸兘鏄敖鍙兘灝忕殑銆?br />涓嬮潰鏄吉浠g爜:
MST-KRUSKAL(G,w)
A<--絀洪泦
for each vertex v 灞炰簬 V[G]
      do MAKE-SET(v)
sort the edges of E into nondecreasing order by weight w
for each edge(u,v)灞炰簬E,taken in nondecreasing order by weight
   do if FIND-SET(u)!=FIND-SET(v)
            then  A<--AU{(u,v)}
                     UNION(u,v)
return A

FIND-SET(u)榪斿洖鍖呭惈u鐨勯泦鍚堜腑鐨勪竴涓唬琛ㄥ厓绱犮備簬鏄氳繃嫻嬭瘯FIND-SET(u)鏄惁絳夊悓浜嶧IND-SET(v)錛屽氨鍙互紜畾欏剁偣u鍜寁鏄惁灞炰簬鍚屼竴媯墊爲銆傞氳繃榪囩▼UNION錛屽彲浠ュ疄鐜版爲涓庢爲鐨勫悎騫躲?br />

Prim綆楁硶(O(ElgV))
    Prim綆楁硶鐨勭壒鐐規槸闆嗗悎A涓殑杈規繪槸褰㈡垚鍗曟5鏍戙傛爲浠庝換鎰忔牴欏剁偣r寮濮嬪艦鎴愶紝騫墮愭笎鐢熸垚錛岀洿鑷寵鏍戣鐩栦簡V涓殑鎵鏈夐《鐐廣傚湪姣忎竴姝ワ紝涓鏉¤繛鎺ヤ簡鏍慉涓嶨a=(V,A)涓煇瀛ょ珛欏剁偣鐨勮交杈硅鍔犲叆鏍慉涓傜敱鎺ㄨ鍙煡錛岃瑙勫垯浠呭姞鍏ュA瀹夊叏鐨勮竟錛屽洜姝ゅ綋綆楁硶緇堟鏃訛紝A涓殑杈瑰艦鎴愪簡涓媯墊渶灝忕敓鎴愭爲銆傚洜姝ゆ瘡嬈℃坊鍔犲埌鏍戜腑鐨勮竟閮芥槸浣挎爲鐨勬潈灝藉彲鑳藉皬鐨勮竟錛屽洜姝わ紝涓婅堪絳栫暐涔熸槸“璐績“鐨勩?br />
浼唬鐮佸涓嬶細
MST-PRIM(G,w,r)

for each u 灞炰簬V[G]
            do key[u]  <--絀洪泦
                  n[u]<--NIL

key[r]<--0
Q<--V[G]
while  Q!=絀洪泦
    do u<---EXTRACT-MIN(Q)
         for each v灞炰簬Adj[u]
               do if v 灞炰簬Q  and w(u,v)<key[v]
                     then n[u]<---u
                            key[v]<--w(u,v)


鍙傝冿細綆楁硶瀵艱

鍛ㄥ己 2011-05-19 11:09 鍙戣〃璇勮
]]>
AVL鏍戯紙杞澆錛?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/05/11/146168.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Wed, 11 May 2011 02:25:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/05/11/146168.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/146168.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/05/11/146168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/146168.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/146168.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;">杞澆錛歨ttp://www.shnenglu.com/converse/archive/2007/08/29/31179.html<br><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">/********************************************************************</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">created:    </span><span style="color: #000000;">2007</span><span style="color: #000000;">/</span><span style="color: #000000;">08</span><span style="color: #000000;">/</span><span style="color: #000000;">28</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">filename:     avltree.c<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">author:        Lichuang<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">purpose:    AVL鏍戠殑瀹炵幇浠g爜, <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            鍙傝冭祫鏂?/span><span style="color: #000000;"><<</span><span style="color: #000000;">鏁版嵁緇撴瀯涓庣畻娉曞垎鏋?/span><span style="color: #000000;">-</span><span style="color: #000000;">C璇█鎻忚堪</span><span style="color: #000000;">>></span><span style="color: #000000;">, 浣滆匒llen Weiss<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">*********************************************************************/</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">#include </span><span style="color: #000000;"><</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">#include </span><span style="color: #000000;"><</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">#include </span><span style="color: #000000;"><</span><span style="color: #0000ff;">time</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">typedef struct AVLTree<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> nData;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    struct AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pLeft;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    struct AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pRight;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> nHeight;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}AVLTree;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> Max(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> a, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> b);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> Height(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> Insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> nData, AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> SingleRotateWithLeft(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> SingleRotateWithRight(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> DoubleRotateWithLeft(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> DoubleRotateWithRight(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">void DeleteTree(AVLTree</span><span style="color: #000000;">**</span><span style="color: #000000;"> ppRoot);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">void PrintTree(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pRoot);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pRoot </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    srand((unsigned </span><span style="color: #0000ff;">int</span><span style="color: #000000;">)::</span><span style="color: #0000ff;">time</span><span style="color: #000000;">(</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">));<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> </span><span style="color: #000000;">100000000</span><span style="color: #000000;">; </span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pRoot </span><span style="color: #000000;">=</span><span style="color: #000000;"> Insert(::rand(), pRoot);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #000000;">//</span><span style="color: #000000;">PrintTree(pRoot);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    DeleteTree(</span><span style="color: #000000;">&</span><span style="color: #000000;">pRoot);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> Max(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> a, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> b)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return (a </span><span style="color: #000000;">></span><span style="color: #000000;"> b ? a : b);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> Height(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        return </span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> Insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> nData, AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pNode </span><span style="color: #000000;">=</span><span style="color: #000000;"> (AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc(sizeof(AVLTree));<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nData </span><span style="color: #000000;">=</span><span style="color: #000000;"> nData;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (nData </span><span style="color: #000000;"><</span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nData)          </span><span style="color: #000000;">//</span><span style="color: #000000;"> 鎻掑叆鍒板乏瀛愭爲涓?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft </span><span style="color: #000000;">=</span><span style="color: #000000;"> Insert(nData, pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft) </span><span style="color: #000000;">-</span><span style="color: #000000;"> Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight) </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">2</span><span style="color: #000000;">)    </span><span style="color: #000000;">//</span><span style="color: #000000;"> AVL鏍戜笉騫寵 <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (nData </span><span style="color: #000000;"><</span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft</span><span style="color: #000000;">-></span><span style="color: #000000;">nData)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                </span><span style="color: #000000;">//</span><span style="color: #000000;"> 鎻掑叆鍒頒簡宸﹀瓙鏍戝乏杈? 鍋氬崟鏃嬭漿<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                pNode </span><span style="color: #000000;">=</span><span style="color: #000000;"> SingleRotateWithLeft(pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                </span><span style="color: #000000;">//</span><span style="color: #000000;"> 鎻掑叆鍒頒簡宸﹀瓙鏍戝彸杈? 鍋氬弻鏃嬭漿<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                pNode </span><span style="color: #000000;">=</span><span style="color: #000000;"> DoubleRotateWithLeft(pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (nData </span><span style="color: #000000;">></span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nData)          </span><span style="color: #000000;">//</span><span style="color: #000000;"> 鎻掑叆鍒板彸瀛愭爲涓?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight </span><span style="color: #000000;">=</span><span style="color: #000000;"> Insert(nData, pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight) </span><span style="color: #000000;">-</span><span style="color: #000000;"> Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft) </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">2</span><span style="color: #000000;">)    </span><span style="color: #000000;">//</span><span style="color: #000000;"> AVL鏍戜笉騫寵 <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (nData </span><span style="color: #000000;">></span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight</span><span style="color: #000000;">-></span><span style="color: #000000;">nData)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                </span><span style="color: #000000;">//</span><span style="color: #000000;"> 鎻掑叆鍒頒簡鍙沖瓙鏍戝彸杈? 鍋氬崟鏃嬭漿<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                pNode </span><span style="color: #000000;">=</span><span style="color: #000000;"> SingleRotateWithRight(pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            {<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                </span><span style="color: #000000;">//</span><span style="color: #000000;"> 鎻掑叆鍒頒簡鍙沖瓙鏍戝乏杈? 鍋氬弻鏃嬭漿<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">                pNode </span><span style="color: #000000;">=</span><span style="color: #000000;"> DoubleRotateWithRight(pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">            }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    }<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> Max(Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft), Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight)) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return pNode;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">/********************************************************************</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">      pNode                                pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">      </span><span style="color: #000000;">/</span><span style="color: #000000;">                                             </span><span style="color: #000000;">\</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft                      </span><span style="color: #000000;">==></span><span style="color: #000000;">              pNode<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">           </span><span style="color: #000000;">\</span><span style="color: #000000;">                                       </span><span style="color: #000000;">/</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">          pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight                   pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">*********************************************************************/</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> SingleRotateWithLeft(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode1;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #000000;">//</span><span style="color: #000000;"> 緇撶偣鐨勪綅緗彉浜? 瑕佹洿鏂扮粨鐐圭殑楂樺害鍊?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> Max(Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft), Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight)) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> Max(Height(pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft), pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return pNode1;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">/********************************************************************</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">pNode                                   pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">     </span><span style="color: #000000;">\</span><span style="color: #000000;">                                  </span><span style="color: #000000;">/</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">     pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight           </span><span style="color: #000000;">==></span><span style="color: #000000;">    pNode <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">     </span><span style="color: #000000;">/</span><span style="color: #000000;">                                   </span><span style="color: #000000;">\</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft                     pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">*********************************************************************/</span><span style="color: #000000;"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> SingleRotateWithRight(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode1;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft </span><span style="color: #000000;">=</span><span style="color: #000000;"> pNode;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #000000;">//</span><span style="color: #000000;"> 緇撶偣鐨勪綅緗彉浜? 瑕佹洿鏂扮粨鐐圭殑楂樺害鍊?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> Max(Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft), Height(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight)) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> Max(Height(pNode1</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight), pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">nHeight) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return pNode1;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> DoubleRotateWithLeft(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft </span><span style="color: #000000;">=</span><span style="color: #000000;"> SingleRotateWithRight(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return SingleRotateWithLeft(pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> DoubleRotateWithRight(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pNode)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight </span><span style="color: #000000;">=</span><span style="color: #000000;"> SingleRotateWithLeft(pNode</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    return SingleRotateWithRight(pNode);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">//</span><span style="color: #000000;"> 鍚庡簭閬嶅巻鏍戜互鍒犻櫎鏍?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">void DeleteTree(AVLTree</span><span style="color: #000000;">**</span><span style="color: #000000;"> ppRoot)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> ppRoot || </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">*</span><span style="color: #000000;">ppRoot)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        return;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    DeleteTree(</span><span style="color: #000000;">&</span><span style="color: #000000;">((</span><span style="color: #000000;">*</span><span style="color: #000000;">ppRoot)</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft));<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    DeleteTree(</span><span style="color: #000000;">&</span><span style="color: #000000;">((</span><span style="color: #000000;">*</span><span style="color: #000000;">ppRoot)</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight));<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    free(</span><span style="color: #000000;">*</span><span style="color: #000000;">ppRoot);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #000000;">*</span><span style="color: #000000;">ppRoot </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000;">//</span><span style="color: #000000;"> 涓簭閬嶅巻鎵撳嵃鏍戠殑鎵鏈夌粨鐐? 鍥犱負宸︾粨鐐?nbsp;</span><span style="color: #000000;"><</span><span style="color: #000000;"> 鐖剁粨鐐?nbsp;</span><span style="color: #000000;"><</span><span style="color: #000000;"> 鍙崇粨鐐? 鍥犳鎵撳嵃鍑烘潵鏁版嵁鐨勫ぇ灝忔槸閫掑鐨?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">void PrintTree(AVLTree</span><span style="color: #000000;">*</span><span style="color: #000000;"> pRoot)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"> </span><span style="color: #000000;">==</span><span style="color: #000000;"> pRoot)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">        return;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    static </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> n </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    PrintTree(pRoot</span><span style="color: #000000;">-></span><span style="color: #000000;">pLeft);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">[%d]nData = %d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">++</span><span style="color: #000000;">n, pRoot</span><span style="color: #000000;">-></span><span style="color: #000000;">nData);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">    PrintTree(pRoot</span><span style="color: #000000;">-></span><span style="color: #000000;">pRight);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top">}<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top"></span></div><img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/146168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-05-11 10:25 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/05/11/146168.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍔ㄦ佽鍒掞紙涓夛級http://www.shnenglu.com/tankzhouqiang/archive/2011/04/04/143395.html鍛ㄥ己鍛ㄥ己Mon, 04 Apr 2011 05:45:00 GMThttp://www.shnenglu.com/tankzhouqiang/archive/2011/04/04/143395.htmlhttp://www.shnenglu.com/tankzhouqiang/comments/143395.htmlhttp://www.shnenglu.com/tankzhouqiang/archive/2011/04/04/143395.html#Feedback0http://www.shnenglu.com/tankzhouqiang/comments/commentRss/143395.htmlhttp://www.shnenglu.com/tankzhouqiang/services/trackbacks/143395.html
鍙傝冪畻娉曞璁虹208欏?br>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>


void LCS(char *p,char *q)
{
    int lenP,lenQ;
    int *s,*t;
    lenP=strlen(p);
    lenQ=strlen(q);
    int i,j;

    if((s=(int*)malloc(sizeof(int)*(lenP+1)*(lenQ+1)))==NULL)
    {
        perror("malloc error");
        exit(1);
    }

    if((t=(int*)malloc(sizeof(int)*(lenP+1)*(lenQ+1)))==NULL)
    {
        perror("malloc error");
        exit(1);
    }

    for(i=0;i<(lenP+1);i++)
        s[i]=0;
    for(i=0;i<(lenQ+1);i++)
        s[i*(lenP+1)]=0;

    for(i=1;i<(lenQ+1);i++)
    {
        for(j=1;j<(lenP+1);j++)
        {
            if(q[i-1]==p[j-1])
            {
                s[i*(lenP+1)+j]=s[(i-1)*(lenP+1)+j-1]+1;
                t[i*(lenP+1)+j]=3;
            }else if(s[(i-1)*(lenP+1)+j]<s[i*(lenP+1)+j-1]){
                s[i*(lenP+1)+j]=s[i*(lenP+1)+j-1];
                t[i*(lenP+1)+j]=1;
            }else{
                s[i*(lenP+1)+j]=s[(i-1)*(lenP+1)+j];
                t[i*(lenP+1)+j]=2;
            }
        }
    }
    /*杈撳嚭鐭╅樀緇撴灉*/
    printf("output the result:\n");
    for(i=0;i<(lenQ+1);i++)
    {
        for(j=0;j<(lenP+1);j++)
        {
            printf("%d  ",s[i*(lenP+1)+j]);
        }
        printf("\n");
    }


    printf("output the result 綆ご 1琛ㄧず鍚戝乏錛?琛ㄧず鍚戜笂錛?琛ㄧず鏂滃悜涓?\n");
    for(i=0;i<(lenQ+1);i++)
    {
        for(j=0;j<(lenP+1);j++)
        {
            printf("%d  ",t[i*(lenP+1)+j]);
        }
        printf("\n");
    }

    i=lenQ;
    j=lenP;
    /*鍊掑簭杈撳嚭LCS*/
    printf("鍊掑簭杈撳嚭LCS\n");
    while(i>1 || j>1)
    {
        if(t[i*(lenP+1)+j]==3)
        {
            printf("%c  ",p[j-1]);
            i--;
            j--;
        }else if(t[i*(lenP+1)+j]==2)
        {
            i--;
        }else
            j--;
    }
    printf("\n");
}

int main()
{
    char *p="BDCABA";
    char *q="ABCBDAB";
    LCS(p,q);
}



鍛ㄥ己 2011-04-04 13:45 鍙戣〃璇勮
]]>
鍔ㄦ佽鍒?浜?http://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143365.html鍛ㄥ己鍛ㄥ己Sun, 03 Apr 2011 13:28:00 GMThttp://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143365.htmlhttp://www.shnenglu.com/tankzhouqiang/comments/143365.htmlhttp://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143365.html#Feedback0http://www.shnenglu.com/tankzhouqiang/comments/commentRss/143365.htmlhttp://www.shnenglu.com/tankzhouqiang/services/trackbacks/143365.html#include<stdio.h>
#include<stdlib.h>

#define MAX 65536

void printMatrix(int *s,int len,int i,int j)
{
    if(i==j)
        printf("A%d",i+1);
    else{
        printf("(");
        printMatrix(s,len,i,s[i*len+j]);
        printMatrix(s,len,s[i*len+j]+1,j);
        printf(")");
    }

}

void matrixOrder(int p[][2],int len)
{
    int *m,*s;
    int i,j,k;
    if((m=malloc(len*len*sizeof(int)))==NULL)
    {
        perror("malloc error");
        exit(1);
    }

    if((s=malloc(len*len*sizeof(int)))==NULL)
    {
        perror("malloc error");
        exit(1);
    }

    for(i=0;i<len;i++)
        m[i*len+i]=0;

    for(i=1;i<len;i++)
    {
        for(j=0;j+i<len;j++)
        {
            m[j*len+j+i]=MAX;
            for(k=j;k<j+i;k++)
            {
                if((p[j][0]*p[k][1]*p[i+j][1]+m[j*len+k]+m[(k+1)*len+i+j])<m[j*len+j+i])
                {
                    m[j*len+j+i]=p[j][0]*p[k][1]*p[i+j][1]+m[j*len+k]+m[(k+1)*len+i+j];
                    s[j*len+j+i]=k;
                }
            }
        }
    }

    printf("##### then matrix m\n");
    for(i=0;i<len;i++)
    {
        for(j=0;j<len;j++)
        {
            printf("%d  ",m[i*len+j]);
        }
        printf("\n");
    }
    printf("##### the matrix s\n");    
    for(i=0;i<len;i++)
    {
        for(j=0;j<len;j++)
        {
            printf("%d  ",s[i*len+j]);
        }
        printf("\n");
    }
    
    printMatrix(s,len,0,5);
    printf("\n");
}


int main()
{
    int p[6][2]={{30,35},{35,15},{15,5},{5,10},{10,20},{20,25}};
    matrixOrder(p,6);
}




鍛ㄥ己 2011-04-03 21:28 鍙戣〃璇勮
]]>
鍔ㄦ佽鍒掞紙涓錛?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143364.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Sun, 03 Apr 2011 13:26:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143364.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/143364.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/143364.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/143364.html</trackback:ping><description><![CDATA[鍔ㄦ佽鍒掓槸閫氳繃緇勫悎瀛愰棶棰樼殑瑙h岃В鍐蟲暣涓棶棰樸?br>鍔ㄦ佽鍒掔畻娉曡璁″彲浠ュ垎涓?涓楠?br>錛?錛夋弿榪版渶浼樿В鐨勭粨鏋?br>錛?錛夐掑綊瀹氫箟鏈浼樿В鐨勫?br>錛?錛夋寜鑷簳鍚戜笂鐨勬柟寮忚綆楁渶浼樿В鐨勫?br>錛?錛夌敱璁$畻鍑虹殑緇撴灉鏋勯犱竴涓渶浼樿В<br><br>瑁呴厤綰胯皟搴﹀疄鐜?綆楁硶瀵艱192欏?<br><br>鍙傝冪畻娉曞璁?絎?5绔?br><br>#include<stdio.h><br>#include<stdlib.h><br><br><br>int schedule(int a[][6],int t[][5],int e[],int x[])<br>{<br><br>    int f[2][6];<br>    int l[2][5];<br>    int totalMin;<br>    int lastL;<br>    int i,k;<br>    f[0][0]=e[0]+a[0][0];<br>    f[1][0]=e[1]+a[1][0];<br><br>    for(i=1;i<6;i++)<br>    {<br>        if(f[0][i-1]<(f[1][i-1]+t[1][i-1]))<br>        {<br>            f[0][i]=f[0][i-1]+a[0][i];<br>            l[0][i-1]=1;<br>        }else{<br>            f[0][i]=f[1][i-1]+t[1][i-1]+a[0][i];<br>            l[0][i-1]=2;<br>        }<br><br>        if(f[1][i-1]<(f[0][i-1]+t[0][i-1]))<br>        {<br>            f[1][i]=f[1][i-1]+a[1][i];<br>            l[1][i-1]=2;<br>        }else{<br>            f[1][i]=f[0][i-1]+t[0][i-1]+a[1][i];<br>            l[1][i-1]=1;<br>        }<br>    }<br><br>    for(i=0;i<2;i++)<br>    {<br>        for(k=0;k<6;k++)<br>        {<br>            printf("%d  ",f[i][k]);<br>        }<br>        printf("\n");<br>    }<br><br>    if((x[0]+f[0][5])<(x[1]+f[1][5]))<br>    {<br>        totalMin=x[0]+f[0][5];<br>        lastL=1;<br>    }else{<br>        totalMin=x[1]+f[1][5];<br>        lastL=2;<br>    }<br>    printf("totalMin=%d\n",totalMin);<br><br><br>    if(lastL==1)<br>    {<br>        printf("S (1,6) ");<br>        k=0;<br>    }else{<br>        printf("S (2,6) ");<br>        k=1;<br>    }<br><br>    for(i=4;i>=0;i--)<br>    {<br>        if(l[k][i]==1)<br>        {<br>            printf("S (1, %d)  ",i+1);<br>            k=0;<br>        }else{<br>            printf("S (2, %d)  ",i+1);<br>            k=1;<br>        }<br>    }<br>    printf("\n");<br>}<br><br>int main()<br>{<br>    int a[2][6]={{7,9,3,4,8,4},{8,5,6,4,5,7}};<br>    int t[2][5]={{2,3,1,3,4},{2,1,2,2,1}};<br>    int e[2]={2,4};<br>    int x[2]={3,2};<br><br>    schedule(a,t,e,x);<br><br>} <br><br><img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/143364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-04-03 21:26 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/04/03/143364.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綰㈤粦鏍戝疄鐜?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/04/02/143312.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Sat, 02 Apr 2011 13:43:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/04/02/143312.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/143312.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/04/02/143312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/143312.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/143312.html</trackback:ping><description><![CDATA[/*綰㈤粦鏍戣璁′笌瀹炵幇<br>*鍙傝冪畻娉曞璁?br>*http://www.shnenglu.com/converse/archive/2008/11/10/66530.html<br><br>鎻掑叆鏃舵湁涓夌鎯呭喌錛堣繖閲屽彧鑰冭檻z鐨勭埗鑺傜偣鏄痾鐨勭鐖惰妭鐐圭殑宸﹀瀛愶紝z鐨勭埗鑺傜偣鏄痾鐨勭鐖惰妭鐐圭殑鍙沖瀛愬縐頒篃涓鏍鳳級<br>錛?錛?z鐨勫彅鍙攜鏄孩鑹茬殑錛堟敼鍙橀鑹?鎻愬崌x錛?br>錛?錛?z鐨勫彅鍙攜鏄粦鑹茬殑錛岃屼笖z鏄彸瀛╁瓙錛堝乏鏃嬶級<br>錛?錛?z鐨勫彅鍙攜鏄粦鑹茬殑錛岃屼笖z鏄乏瀛╁瓙錛堝彸鏃嬪姞鏀瑰彉棰滆壊錛?br><br>鍒犻櫎鏃舵湁鍥涚鎯呭喌錛堣繖閲屽彧鑰冭檻z鏄痾鐨勭埗鑺傜偣鐨勫乏瀛╁瓙錛寊鏄痾鐨勭埗鑺傜偣鐨勫彸瀛╁瓙瀵圭О涔熶竴鏍鳳級<br>錛?錛墄鐨勫厔寮焪鏄孩鑹茬殑錛堝乏鏃嬪姞鏀瑰彉棰滆壊錛?br>錛?錛墄鐨勫厔寮焪鏄粦鑹茬殑錛岃屼笖w鐨勪袱涓瀛愰兘鏄粦鑹茬殑錛堟敼鍙橀鑹詫紝鎻愬崌x)<br>錛?錛墄鐨勫厔寮焪鏄粦鑹茬殑錛寃鐨勫乏瀛╁瓙鏄孩鑹茬殑錛屽彸瀛╁瓙鏄粦鑹茬殑(鏀瑰彉棰滆壊鍔犲彸鏃?<br>錛?錛墄鐨勫厔寮焪鏄粦鑹茬殑錛岃屼笖w鐨勫彸瀛╁瓙鏄孩鑹茬殑錛堟敼鍙橀鑹插姞宸︽棆錛?br>*/<br><br>#include<stdio.h><br>#include<stdlib.h><br>#include<string.h><br><br>/*瀹氫箟棰滆壊鏋氫婦綾誨瀷*/<br>typedef enum color_t<br>{<br>    RED=0,<br>    BLACK=1<br>}color_t;<br><br><br>/*瀹氫箟緇撴瀯浣?/<br>typedef struct rb_node_t<br>{<br>    int key;<br>    color_t color;<br>    struct rb_node_t *left,*right,*parent;<br>}rb_node_t;<br><br>/* 嫻嬭瘯鏄惁涓虹孩榛戞爲*/<br>int  isRedBlackTree(rb_node_t *root,int count)<br>{<br>    if(root==NULL)<br>    {<br>        printf("榛戦珮搴︿負 %d\n",count);<br>        if(count!=12)/*閫氳繃嫻嬭瘯璇ユ祴璇曠敤渚嬮粦楂樺害涓?2錛屼笉鍏鋒湁鏅亶鎬?/<br>        {<br>            printf("not a redblack tree\n");<br>            exit(1);<br>        }<br>    }else{<br>        if(root->color==BLACK)<br>        {<br>            count++;<br>        }<br>        else{<br>            if((root->left!=NULL &&root->left->color==RED)||<br>                    (root->right!=NULL && root->right->color==RED))<br>            {<br>                printf("child color RED\n");<br>            }<br>        }<br>        isRedBlackTree(root->left,count);<br>        isRedBlackTree(root->right,count);<br>    }<br>    <br>}<br><br>/*涓簭鎵撳嵃鑺傜偣鐢ㄤ簬嫻嬭瘯*/<br>void midPrint(rb_node_t *root)<br>{<br>    if(root!=NULL)<br>    {<br>        midPrint(root->left);<br>        printf("%d  ",root->key);<br>        if(root->color==RED)<br>            printf("RED  ");<br>        else<br>            printf("BLACK  ");<br>        midPrint(root->right);<br>    }<br>}<br>/*鍏堝簭鎵撳嵃鑺傜偣鐢ㄤ簬嫻嬭瘯*/<br>void prePrint(rb_node_t *root)<br>{<br>    if(root!=NULL)<br>    {<br><br>        printf("%d  ",root->key);<br>        if(root->color==RED)<br>            printf("RED  ");<br>        else<br>            printf("BLACK  ");<br>        prePrint(root->left);<br>        prePrint(root->right);<br>    }<br>}<br><br>/*鍒涘緩鑺傜偣*/<br>rb_node_t * createNode(int key)<br>{<br>    rb_node_t *newNode;<br>    if((newNode=malloc(sizeof(rb_node_t)))==NULL)<br>    {<br>        printf("malloc error");<br>        return NULL;<br>    }<br>    newNode->color=RED;<br>    newNode->left=NULL;<br>    newNode->right=NULL;<br>    newNode->key=key;<br>    newNode->parent=NULL;<br>    return newNode;<br>}<br><br>/*宸︽棆*/<br>rb_node_t * leftRotate(rb_node_t *root,rb_node_t *node)<br>{<br>    rb_node_t *right;<br>    right=node->right;<br><br>    if(node->right=right->left)<br>    {<br>        right->left->parent=node;<br>    }<br>    right->left=node;<br>    if(right->parent=node->parent)<br>    {<br>        if(node->parent->left==node)<br>            node->parent->left=right;<br>        else<br>            node->parent->right=right;<br>    }else<br>        root=right;<br>    node->parent=right;<br>    return root;<br><br>}<br><br>/*鍙蟲棆*/<br>rb_node_t *rightRotate(rb_node_t *root,rb_node_t *node)<br>{<br>    rb_node_t *left;<br>    left=node->left;<br>    if(node->left=left->right)<br>        left->right->parent=node;<br>    left->right=node;<br>    if(left->parent=node->parent)<br>    {<br>        if(node->parent->left==node)<br>            node->parent->left=left;<br>        else<br>            node->parent->right=left;<br>    }else<br>        root=left;<br>    node->parent=left;<br>    return root;<br>}<br><br>/*鏌ユ壘鑺傜偣錛岃嫢鎵懼埌鍒欒繑鍥炶鑺傜偣錛岃嫢娌℃壘鍒拌繑鍥濶ULL騫朵笖灝嗙埗鑺傜偣淇濆瓨鍒皊ave涓?/<br>rb_node_t * rb_search_auxiliary(int key,rb_node_t *root,rb_node_t **save)<br>{<br>    rb_node_t *node,*parent;<br>    node=root;<br>    parent=NULL;<br>    while(node)<br>    {<br>        parent=node;<br>        if(node->key<key)<br>            node=node->right;<br>        else if(node->key>key)<br>            node=node->left;<br>        else<br>            return node;<br>    }<br>    if(save)<br>        *save=parent;<br>    return NULL;<br>}<br><br>/*鏌ユ壘鑺傜偣*/<br>rb_node_t * rb_search(int key,rb_node_t *root)<br>{<br>    return rb_search_auxiliary(key,root,NULL);<br>}<br><br>/*鎻掑叆鑺傜偣鍚庤繘琛岃皟鏁達紝浣垮叾婊¤凍綰㈤粦鏍戞ц川*/<br>rb_node_t * rb_insert_reblance(rb_node_t *root,rb_node_t *node)<br>{<br>    rb_node_t *parent,*uncle,*grandParent,*temp;<br>    while((parent=node->parent)&&(parent->color==RED))<br>    {<br>        grandParent=parent->parent;<br>        if(parent==grandParent->left)<br>        {<br>            uncle=grandParent->right;<br>            if(uncle!=NULL && uncle->color==RED)<br>            {<br>                parent->color=BLACK;<br>                uncle->color=BLACK;<br>                grandParent->color=RED;<br>                node=grandParent;<br>            }else{<br>                if(node==parent->right)<br>                {<br>                    root=leftRotate(root,parent);<br>                    temp=parent;<br>                    parent=node;<br>                    node=temp;<br>                }<br>                //printf("##########\n");<br>                //print(root);<br>                //printf("\n");<br>                parent->color=BLACK;<br>                grandParent->color=RED;<br>                root=rightRotate(root,grandParent);<br>                <br>                //printf("##########\n");<br>            //    print(root);<br>            //    printf("\n");<br>            }<br>        }else{<br>            uncle=grandParent->left;<br>            if(uncle!=NULL && uncle->color==RED)<br>            {<br>                parent->color=BLACK;<br>                uncle->color=BLACK;<br>                grandParent->color=RED;<br>                node=grandParent;<br>            }else{<br>                if(node==parent->left)<br>                {<br>                    root=rightRotate(root,parent);<br>                    temp=parent;<br>                    parent=node;<br>                    node=temp;<br>                }<br>                parent->color=BLACK;<br>                grandParent->color=RED;<br>                root=leftRotate(root,grandParent);<br><br>            }<br>        }<br>    }<br>    root->color=BLACK;<br>    return root;<br>}<br><br>/*綰㈤粦鏍戞彃鍏ヨ妭鐐?/<br>rb_node_t * rb_insert(rb_node_t *root,int key)<br>{<br>    rb_node_t *parent,*newNode;<br>    newNode=createNode(key);<br>    <br>    if(rb_search_auxiliary(key,root,&parent)!=NULL)<br>    {<br>        printf("already exixt\n");<br>        return root;<br>    }<br>    if(parent==NULL)<br>    {<br>        root=newNode;<br>    }else{<br>        newNode->parent=parent;<br>        if(parent->key<key)<br>            parent->right=newNode;<br>        else<br>            parent->left=newNode;<br>    }<br>//    print(root);<br>//    printf("\n");<br>    root=rb_insert_reblance(root,newNode);<br>    return root;<br>}<br><br><br>/*鍒犻櫎榛戣妭鐐瑰悗榪涜璋冩暣錛屼嬌鍏舵弧瓚崇孩榛戞爲鎬ц川*/<br>rb_node_t *rb_delete_reblance(rb_node_t *root,rb_node_t *node,rb_node_t *parent)<br>{<br>    rb_node_t *brother;<br>    while((node==NULL ||node->color==BLACK)&&((node!=root)))<br>    {<br>        if(node==parent->left)<br>        {<br>            brother=parent->right;<br>            if(brother->color==RED)<br>            {<br>                brother->color=BLACK;<br>                parent->color=RED;<br>                root=leftRotate(root,parent);<br>                brother=parent->right;<br>            }<br>            if((!brother->left || brother->left->color==BLACK)&&<br>                    (!brother->right || brother->right->color==BLACK))<br>            {<br>                brother->color=RED;<br>                node=parent;<br>                parent=parent->parent;<br>            }else{<br>                if(!brother->right || brother->right->color==BLACK)<br>                {<br>                    brother->color=RED;<br>                    brother->left->color=BLACK;<br>                    root=rightRotate(root,brother);<br>                    brother=parent->right;<br>                }<br>                brother->color=parent->color;<br>                parent->color=BLACK;<br>                brother->right->color=BLACK;<br>                root=leftRotate(root,parent);<br>                node=root;<br>            }<br>        <br>        }else{<br>            brother=parent->left;<br>            if(brother->color==RED)<br>            {<br>                brother->color=BLACK;<br>                parent->color=RED;<br>                root=rightRotate(root,parent);<br>                brother=parent->left;<br>            }<br>            <br>            if((!brother->left ||brother->left->color==BLACK) &&<br>                    (!brother->right ||brother->right->color==BLACK))<br>            {<br>                brother->color=RED;<br>                node=parent;<br>                parent=parent->parent;<br>            }else {<br>                if(!brother->left || brother->left->color==BLACK)<br>                {<br>                    brother->color=RED;<br>                    brother->right->color=BLACK;<br>                    root=leftRotate(root,brother);<br>                    brother=parent->left;<br>                }<br>                brother->color=parent->color;<br>                parent->color=BLACK;<br>                brother->left->color=BLACK;<br>                root=rightRotate(root,parent);<br>                node=root;<br>            }<br>        }<br>    }<br>    node->color=BLACK;<br>    return root;<br>}<br><br>rb_node_t *rb_delete(rb_node_t *root,int key)<br>{<br>    rb_node_t *node,*old,*child,*parent;<br>    color_t color;<br>    child=NULL;<br><br>    if((node=rb_search(key,root))==NULL)<br>    {<br>        printf("not find the node\n");<br>        return root;<br>    }<br><br>    old=node;<br><br>    if(node->left!=NULL && node->right!=NULL)<br>    {<br>        node=node->right;<br>        while(node->left!=NULL)<br>        {<br>            node=node->left;<br>        }<br>        child=node->right;<br>        parent=node->parent;<br>        if(child)<br>            child->parent=parent;<br>        if(parent->left==node)<br>            parent->left=child;<br>        else<br>            parent->right=child;<br>        <br>        if(node->parent==old)<br>        {<br>            parent=node;<br>        }<br>        color=node->color;<br>        node->left=old->left;<br>        node->right=old->right;<br>        node->color=old->color;<br>        node->parent=old->parent;<br>        if(old->parent)<br>        {<br>            if(old->parent->left==old)<br>                old->parent->left=node;<br>            else<br>                old->parent->right=node;<br>        }else<br>            root=node;<br>        old->left->parent=node;<br>        if(old->right)<br>            old->right->parent=node;<br>        free(old);<br>    }else{<br>        parent=node->parent;<br>        if(node->left!=NULL)<br>            child=node->left;<br>        else<br>            child=node->right;<br>        if(child)<br>            child->parent=parent;<br><br>        if(parent)<br>        {<br>            if(parent->left==node)<br>                parent->left=child;<br>            else<br>                parent->right=child;<br>        }else<br>            root=child;<br>        color=node->color;<br>        free(node);<br>    }<br>    if(color==BLACK)<br>        rb_delete_reblance(root,child,parent);<br>    return root;<br>}<br><br>int main()<br>{<br>    int i,count=900000;<br>    int key;<br>    rb_node_t *root=NULL,*node=NULL;<br><br>    srand(time(NULL));<br>    int num=0;<br>    for(i=1;i<count;++i)<br>    {<br>        key=rand()%count;<br>        if(root=rb_insert(root,key))<br>        {<br>            printf("[i=%d] insert key %d,success!\n",i,key);<br>        }else{<br>            printf("[i=%d] insert key %d error!\n",i,key);<br>            exit(1);<br>        }<br>//        printf("褰撳墠鏍戜腑鑺傜偣\n");<br>//        midPrint(root);<br>//        printf("\n");<br><br>        if((node=rb_search(key,root)))<br>        {<br>            printf("[i=%d] search key %d success!\n",i,key);<br>        }else{<br><br>            printf("[i=%d] search key %d error!\n",i,key);<br>            exit(1);<br>        }<br>        <br>        if(!(i%10))<br>        {<br><br>        //    prePrint(root);<br>            if((root=rb_delete(root,key)))<br>            {<br>                printf("[i=%d] delete key %d success\n",i,key);<br>            }else<br>            {<br>                printf("[i=%d] erase key %d error\n",i,key);<br>                exit(1);<br>            }<br>            <br>        }<br><br>    }<br><br>    /*printf("#########綰垮簭閬嶅巻\n");<br>    prePrint(root);<br>    printf("\n");<br><br>    printf("$$$$$$$$$涓簭閬嶅巻\n");<br>    midPrint(root);<br>    printf("\n");<br>    */<br>    printf("the root color %d\n",root->color);<br>    isRedBlackTree(root,0);<br><br>    return 0;<br>} <br><br> <img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/143312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-04-02 21:43 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/04/02/143312.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浜屽弶鏌ユ壘鏍戝疄鐜?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/28/142862.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Mon, 28 Mar 2011 08:15:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/28/142862.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/142862.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/28/142862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/142862.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/142862.html</trackback:ping><description><![CDATA[#include<stdio.h><br>#include<stdlib.h><br>#include<string.h><br><br>/*緇撴瀯浣撹妭鐐?/<br>typedef struct  _node{<br>    int key;<br>    struct _node *left;<br>    struct _node *right;<br>    struct _node *parent;<br>}node;<br><br><br>/*鎻掑叆鑺傜偣*/<br>void insert(node *root,node *toInsert)<br>{<br>    node *p,*q;<br>    p=root;<br>    q=NULL;<br>    if(toInsert==NULL || root==NULL)<br>    {<br>        return;<br>    }<br><br>    while(p!=NULL)<br>    {<br>        q=p;/*璁板綍鐖惰妭鐐?/<br>        if(toInsert->key<p->key)<br>        {<br>            p=p->left;<br>        }else{<br>            p=p->right;<br>        }    <br>    }<br>    if(toInsert->key<q->key)<br>    {<br>        q->left=toInsert;<br>    }else{<br>        q->right=toInsert;<br>    }<br>    toInsert->parent=q;<br>    toInsert->left=NULL;<br>    toInsert->right=NULL;<br>}<br><br>/*閫掑綊涓簭閬嶅巻鏍硅妭鐐?/<br>void middleSearch(node *root)<br>{<br>    if(root!=NULL)<br>    {<br>        middleSearch(root->left);<br>        printf("%d\t",root->key);<br>        middleSearch(root->right);<br>    }<br>}<br>/*鍏堝簭閬嶅巻*/<br>void preSearch(node *root)<br>{<br>    if(root!=NULL)<br>    {<br>        printf("%d\t",root->key);<br>        preSearch(root->left);<br>        preSearch(root->right);<br>    }<br>}<br><br>/*鏌ユ壘榪斿洖鑺傜偣鍏抽敭瀛椾負key鐨勮妭鐐?/<br>node* search(node *root,int key)<br>{<br>    node *p=root;<br>    while(p!=NULL)<br>    {<br>        if(key<p->key)<br>        {<br>            p=p->left;<br>        }else if(key>p->key)<br>        {<br>            p=p->right;<br>        }else<br>            break;<br>    }<br>    return p;<br>}<br><br>/*鏌ユ壘浜屽弶鏍戞渶灝忓?/<br>node *minimun(node *root)<br>{<br>    node *p=root;<br>    if(p==NULL)<br>        return p;<br>    while(p->left!=NULL)<br>        p=p->left;<br>    printf("min %d\n",p->key);<br>    return p;<br>}<br><br>/*鏌ユ壘浜屽弶鏍戞渶澶у?/<br>node *maximun(node *root)<br>{<br>    node *p=root;<br>    if(p==NULL)<br>        return;<br>    while(p->right!=NULL)<br>        p=p->right;<br>    printf("max %d\n",p->key);<br>    return p;<br>}<br>/*鎵捐妭鐐瑰悗緇?/<br>node* successor(node *x)<br>{<br>    node *p;<br>    if(NULL==x)<br>        return x;<br>    if(x->right!=NULL)<br>        return minimun(x->right);<br>    p=x->parent;<br>    while(p!=NULL && p->right==x)<br>    {<br>        x=p;<br>        p=p->parent;<br>    }<br>    return p;<br>}<br><br>/*鍒犻櫎鑺傜偣*/<br>void delete(node *root,node *toDelete)<br>{<br>    node *p,*q;<br>    int key;<br>    if(root==NULL || toDelete==NULL)<br>        return ;<br>    p=toDelete->parent;<br><br>    /*絎竴縐嶆儏鍐碉紝瑕佸垹闄ょ殑鑺傜偣鐨勫乏鍙沖瓙鏍戦兘涓虹┖*/<br>    if(toDelete->left ==NULL && toDelete->right ==NULL)<br>    {<br>        if(p==NULL)/*瑕佸垹闄ょ殑鏄牴鑺傜偣*/<br>        {<br>            free(toDelete);<br>            return;<br>        }<br>        if(p->left==toDelete)<br>        {<br>            p->left=NULL;<br>        }else <br>            p->right=NULL;<br>        free(toDelete);<br><br>    }<br><br>    /*絎簩縐嶆儏鍐碉紝瑕佸垹闄ょ殑宸﹀瓙鏍戜負絀猴紝鍙沖瓙鏍戜笉涓虹┖*/<br>    else if(toDelete->left==NULL)<br>    {    <br>        if(p==NULL)<br>        {<br>            q=root->right;<br>            root->key=q->key;<br>            root->left=q->left;<br>            root->right=q->right;<br><br>            free(q);<br>            return;<br>        }<br>        else if(p->left==toDelete)<br>        {<br>            p->left=toDelete->right;<br>        }else<br>            p->right=toDelete->right;<br>        toDelete->right->parent=p;<br>        free(toDelete);<br>    }<br><br>    /* 絎笁縐嶆儏鍐碉紝瑕佸垹闄ょ殑鍙沖瓙鏍戜負絀猴紝宸﹀瓙鏍戜笉涓虹┖*/<br>    else if(toDelete->right==NULL)<br>    {<br>        if(p==NULL)<br>        {<br>            q=root->left;<br>            root->key=q->key;<br>            root->left=q->left;<br>            root->right=q->right;<br>            root->parent=NULL;<br>            free(q);<br>            return;<br>        }<br>        else if(p->left==toDelete)<br>        {<br>            p->left=toDelete->left;<br>        }else<br>            p->right=toDelete->right;<br>        toDelete->parent=p;<br>        free(toDelete);<br>    }<br><br>    /* 絎洓縐嶆儏鍐碉紝瑕佸垹闄ょ殑宸﹀彸瀛愭爲閮戒笉涓虹┖*/<br>    else{<br>            q=successor(toDelete);<br>            key=q->key;<br>            delete(root,q);<br>            toDelete->key=key;<br>    }<br>}<br><br>int main()<br>{<br>    node *root;<br><br>    int a[12]={15,5,3,12,10,13,6,7,16,20,18,23};<br>    node *toInsert;<br>    node *x,*y;<br>    int i;<br>    /*鍒涘緩澶磋妭鐐?/<br>    if((root=(node*)malloc(sizeof(node)))==NULL)<br>    {<br>        perror("malloc error");<br>        exit(1);<br>    }<br>    root->key=a[0];<br>    /*鎻掑叆鑺傜偣*/<br>    for(i=1;i<12;i++)<br>    {<br>        if((toInsert=(node*)malloc(sizeof(node)))==NULL)<br>        {<br>            perror("malloc error");<br>            exit(1);<br>        }<br>        toInsert->key=a[i];<br>        insert(root,toInsert);<br>    }<br><br>    /*涓簭閬嶅巻*/<br>    middleSearch(root);<br>    printf("\n");<br>    /*鍏堝簭閬嶅巻*/<br>    preSearch(root);<br>    printf("\n");<br><br>    /*鏈澶у?/<br>    maximun(root);<br>    /*鏈灝忓?/<br>    minimun(root);<br><br>    /*鏌ユ壘鍏抽敭瀛楄妭鐐瑰強鍏跺墠椹?/<br>    x=search(root,6);<br>    y=successor(x);<br>    if(y!=NULL)<br>        printf("鑺傜偣 6 鍚庨┍ %d\n",y->key);<br><br>    x=search(root,3);<br>    y=successor(x);<br>    if(y!=NULL)<br>        printf("鑺傜偣 3 鍚庨┍ %d\n",y->key);<br><br><br>    x=search(root,13);<br>    y=successor(x);<br>    if(y!=NULL)<br>        printf("鑺傜偣 13 鍚庨┍ %d\n",y->key);<br><br><br>    x=search(root,23);<br>    y=successor(x);<br>    if(y!=NULL)<br>        printf("鑺傜偣 23 鍚庨┍ %d\n",y->key);<br><br>    /*鍒犻櫎鑺傜偣*/<br>    printf("before delete the node\n");<br>    x=search(root,13);<br><br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    <br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br><br>    if((toInsert=(node*)malloc(sizeof(node)))==NULL)<br>    {<br>        perror("malloc error");<br>        exit(1);<br>    }<br>    toInsert->key=13;<br>    insert(root,toInsert);<br>    printf("\n涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br><br><br>    printf("\nbefore delete the node\n");<br>    x=search(root,16);<br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br><br>    if((toInsert=(node*)malloc(sizeof(node)))==NULL)<br>    {<br>        perror("malloc error");<br>        exit(1);<br>    }<br>    toInsert->key=16;<br>    insert(root,toInsert);<br>    printf("\n涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br><br>    printf("\nbefore delete the node\n");<br>    x=search(root,5);<br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br>    if((toInsert=(node*)malloc(sizeof(node)))==NULL)<br>    {<br>        perror("malloc error");<br>        exit(1);<br>    }<br>    toInsert->key=5;<br>    insert(root,toInsert);<br><br>    printf("\n涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br><br>    printf("\nbefore delete the node\n");<br>    x=search(root,15);<br><br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    <br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br><br>    printf("\n");<br><br><br>    printf("before delete the node\n");<br>    x=search(root,16);<br><br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    <br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br>    printf("\n");<br><br><br><br>    printf("before delete the node\n");<br>    x=search(root,18);<br><br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    <br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br>    printf("\n");<br><br>    printf("before delete the node\n");<br>    x=search(root,20);<br><br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    <br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br>    printf("\n");<br><br><br>    printf("before delete the node\n");<br>    x=search(root,23);<br><br>    delete(root,x);<br>    printf("\nafter delete the node\n");<br>    <br>    printf("涓簭閬嶅巻\n");<br>    middleSearch(root);<br>    printf("\n鍏堝簭閬嶅巻\n");<br>    preSearch(root);<br>    printf("\n");<br>}<br> <br><img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/142862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-03-28 16:15 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/03/28/142862.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>蹇熸帓搴忓疄鐜?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/22/142455.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Tue, 22 Mar 2011 02:28:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/22/142455.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/142455.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/22/142455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/142455.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/142455.html</trackback:ping><description><![CDATA[/*蹇熸帓搴忕畻娉曞疄鐜幫紝蹇簭鎺掑簭綆楁硶鏈鍧忓鏉傚害涓篛(n^2),騫沖潎澶嶆潅搴︿負O(nlgn),鑰屼笖璇ユ瘮渚嬪洜瀛愭瘮杈冨皯*/<br><br>#include<stdio.h><br>#include<stdlib.h><br><br><br>void print(int A[],int len)<br>{<br>    int i;<br>    for(i=0;i<len;i++)<br>    {<br>        printf("%d  ",A[i]);<br>    }<br>    printf("\n");<br>}<br><br>int quickPart(int A[],int begin,int end)<br>{<br>    int key,i,j,temp;<br>    key=A[end-1];<br>    i=begin-1;<br>    for(j=begin;j<end-1;j++)<br>    {<br>        if(A[j]<key)<br>        {<br>            i++;<br>            temp=A[i];<br>            A[i]=A[j];<br>            A[j]=temp;<br>        }<br>    }<br>    i++;<br>    temp=A[i];<br>    A[i]=key;<br>    A[end-1]=temp;<br>    return (i);<br>}<br><br><br>void quickSort(int A[],int begin,int end)<br>{<br>    int q;<br>    if(end>begin)<br>    {<br>        q=quickPart(A,begin,end);<br>        quickSort(A,begin,q);<br>        quickSort(A,q+1,end);<br>    }<br>}<br><br><br>int main()<br>{<br>    int  A[8]={2,8,7,1,3,5,6,4};<br>    quickSort(A,0,8);<br>    printf("after sort\n");<br>    print(A,8);<br>}<br><br> <br> <br><img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/142455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-03-22 10:28 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/03/22/142455.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍫嗘帓搴廲璇█瀹炵幇http://www.shnenglu.com/tankzhouqiang/archive/2011/03/21/142413.html鍛ㄥ己鍛ㄥ己Mon, 21 Mar 2011 13:48:00 GMThttp://www.shnenglu.com/tankzhouqiang/archive/2011/03/21/142413.htmlhttp://www.shnenglu.com/tankzhouqiang/comments/142413.htmlhttp://www.shnenglu.com/tankzhouqiang/archive/2011/03/21/142413.html#Feedback0http://www.shnenglu.com/tankzhouqiang/comments/commentRss/142413.htmlhttp://www.shnenglu.com/tankzhouqiang/services/trackbacks/142413.html#include<stdio.h>
#include<stdlib.h>

/*鍋囪鑺傜偣i鐨勫乏鍙沖瓙鏍戦兘鏄渶澶у爢錛屾搷浣滀嬌鑺傜偣i鐨勫瓙鏍戝彉鎴愭渶澶у爢*/
void maxHeap(int A[],int len,int i)
{
    int l,r,large,temp;
    l=2*i;
    r=2*i+1;
    large=i;
    if(l<len)
    {
        if(A[l]>A[i])
        {
            large=l;
        }
    }
    if(r<len)
    {
        if(A[r]>A[large])
        {
            large=r;
        }   
    }

    if(large!=i)
    {
        temp=A[large];
        A[large]=A[i];
        A[i]=temp;
        maxHeap(A,len,large);
    }
}

/*寤虹珛澶ф牴鍫?/
void buildMaxHeap(int A[],int len)
{
    int i;
    for(i=len/2-1;i>=0;i--)
        maxHeap(A,len,i);
}


/*鍫嗘帓搴?/
void maxHeapSort(int A[],int len)
{
    int i,temp;
    buildMaxHeap(A,len);
    printf("寤虹珛澶ц窡鍫哱n");
    for(i=0;i<len;i++)
        printf("%d ",A[i]);
    printf("\n");

    for(i=len;i>1;i--)
    {
        temp=A[0];
        A[0]=A[i-1];
        A[i-1]=temp;
        printf("%d  ",A[i-1]);
        buildMaxHeap(A,i-1);
    }
    printf("\n");
}

/*嫻嬭瘯鍫嗘帓搴?/
int main()
{
    int i;
    int A[11]={4,1,3,2,16,9,10,14,8,7,6};
    maxHeapSort(A,11);
   
    for(i=0;i<11;i++)
    {
        printf("%d  ",A[i]);
    }
    printf("\n");
}



鍛ㄥ己 2011-03-21 21:48 鍙戣〃璇勮
]]>
鎻掑叆鎺掑簭錛岄夋嫨鎺掑簭錛屽啋娉℃帓搴忥紝褰掑茍鎺掑簭錛坈璇█瀹炵幇錛?/title><link>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/15/141892.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Tue, 15 Mar 2011 08:15:00 GMT</pubDate><guid>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/15/141892.html</guid><wfw:comment>http://www.shnenglu.com/tankzhouqiang/comments/141892.html</wfw:comment><comments>http://www.shnenglu.com/tankzhouqiang/archive/2011/03/15/141892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/tankzhouqiang/comments/commentRss/141892.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/tankzhouqiang/services/trackbacks/141892.html</trackback:ping><description><![CDATA[浠婂ぉ澶嶄範浜嗕笅涓浜涘父瑙佺殑鎺掑簭綆楁硶,騫剁敤c璇█瀹炵幇浜嗕笅銆備唬鐮佸涓嬶細<br>#include<stdio.h><br>#include<stdlib.h><br><br>#define MAX 65536 /*鐢ㄤ簬褰掑茍鎺掑簭涓殑鍝ㄥ叺*/<br><br>/*綆鍗曟彃鍏ユ帓搴?鏃墮棿澶嶆潅搴︿負o(n2),紼沖畾鎺掑簭錛岄傚悎宸茬粡鎺掑ソ搴忕殑*/<br>void insertSort(int arr[],int len)<br>{<br>    int i,j;<br>    int key;<br>    for(i=1;i<len;i++)<br>    {<br>        key=arr[i];<br>        for(j=i-1;j>=0;j--)<br>        {<br>            if(arr[j]>key)<br>                arr[j+1]=arr[j];<br>            else <br>                break;<br>        }<br>        arr[j+1]=key;<br>    }<br>}<br><br>/*閫夋嫨鎺掑簭錛屾椂闂村鏉傚害涓簅(n2),涓嶇ǔ瀹氭帓搴忥紝閫傚悎瑙勬ā姣旇緝灝忕殑*/<br>void selectSort(int arr[],int len)<br>{<br>    int i,j,temp;<br>    for(i=0;i<len;i++)<br>    {<br>        for(j=i+1;j<len;j++)<br>        {<br>            if(arr[i]>arr[j])<br>            {<br>                temp=arr[i];<br>                arr[i]=arr[j];<br>                arr[j]=temp;<br>            }<br>        }<br>    }<br>}<br><br>/*鍐掓場鎺掑簭錛屾椂闂村鏉傚害涓簅(n2),紼沖畾鎺掑簭錛岄傚悎瑙勬ā姣旇緝灝忕殑*/<br>void bubbleSort(int arr[],int len)<br>{<br>    int i,j,temp;<br>    for(i=0;i<len;i++)<br>    {<br>        for(j=0;j<len-i-1;j++)<br>        {<br>            if(arr[j]>arr[j+1])<br>            {<br>                temp=arr[j];<br>                arr[j]=arr[j+1];<br>                arr[j+1]=temp;<br>            }<br>        }<br>    }<br>}<br><br>/*鍚堝茍錛堝綊騫訛級鎺掑簭,鏃墮棿澶嶆潅搴︿負o(nlogn),紼沖畾鎺掑簭錛岄傚悎瑙勬ā姣旇緝澶х殑鎺掑簭*/<br>void merge(int arr[],int p,int q,int r)<br>{<br>    int *A,*B;<br>    int n1,n2,i,j,k;<br>    n1=q-p+1;<br>    n2=r-q;<br>    if((A=(int*)malloc((n1+1)*sizeof(int)))==NULL)<br>    {<br>        perror("malloc error");<br>        exit(1);<br>    }<br>    if((B=(int*)malloc((n2+1)*sizeof(int)))==NULL)<br>    {<br>        perror("malloc error");<br>        exit(1);<br>    }<br>    for(i=0;i<n1;i++)<br>    {<br>        A[i]=arr[p+i];<br>    }<br>    A[i]=MAX;<br>    for(i=0;i<n2;i++)<br>    {<br>        B[i]=arr[q+i+1];<br>    }<br>    B[i]=MAX;<br>    i=0;j=0;<br>    for(k=p;k<=r;k++)<br>    {<br>        if(A[i]>B[j])<br>        {<br>            arr[k]=B[j];<br>            j++;<br>        }else{<br>            arr[k]=A[i];<br>            i++;<br>        }<br>    }<br>}<br><br>void mergeSort(int arr[],int begin,int end)<br>{<br>    int mid;<br>    if(begin<end)<br>    {<br>        mid=(begin+end)/2;<br>        mergeSort(arr,begin,mid);<br>        mergeSort(arr,mid+1,end);<br>        merge(arr,begin,mid,end);<br>    }<br>}<br><br>int main()<br>{<br>    int a[8]={5,2,4,7,1,3,2,6};<br>    int b[8]={5,2,4,7,1,3,2,6};<br>    int c[8]={5,2,4,7,1,3,2,6};<br>    int d[8]={5,2,4,7,1,3,2,6};<br>    <br>    int i;<br>    /*嫻嬭瘯鎻掑叆鎺掑簭*/<br>    insertSort(a,8);<br>    printf("after 鎻掑叆鎺掑簭\n");<br>    for(i=0;i<8;i++)<br>    {<br>        printf("%d ",a[i]);<br>    }<br>    printf("\n");<br><br>    /*嫻嬭瘯閫夋嫨鎺掑簭*/<br>    selectSort(b,8);<br>    printf("after 閫夋嫨鎺掑簭\n");<br>    for(i=0;i<8;i++)<br>    {<br>        printf("%d ",b[i]);<br>    }<br>    printf("\n");<br>    <br>    /*嫻嬭瘯鍐掓場鎺掑簭*/<br>    bubbleSort(c,8);<br>    printf("after 鍐掓場鎺掑簭\n");<br>    for(i=0;i<8;i++)<br>    {<br>        printf("%d ",c[i]);<br>    }<br>    printf("\n");<br>    <br>    /*嫻嬭瘯褰掑茍鎺掑簭*/<br>    mergeSort(d,0,7);<br><br>    printf("after 褰掑茍鎺掑簭\n");<br>    for(i=0;i<8;i++)<br>    {<br>        printf("%d ",d[i]);<br>    }<br>    printf("\n");<br>}<br><br><img src ="http://www.shnenglu.com/tankzhouqiang/aggbug/141892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-03-15 16:15 <a href="http://www.shnenglu.com/tankzhouqiang/archive/2011/03/15/141892.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>KMP綆楁硶瀹炵幇http://www.shnenglu.com/tankzhouqiang/archive/2011/03/02/140974.html鍛ㄥ己鍛ㄥ己Wed, 02 Mar 2011 04:23:00 GMThttp://www.shnenglu.com/tankzhouqiang/archive/2011/03/02/140974.htmlhttp://www.shnenglu.com/tankzhouqiang/comments/140974.htmlhttp://www.shnenglu.com/tankzhouqiang/archive/2011/03/02/140974.html#Feedback0http://www.shnenglu.com/tankzhouqiang/comments/commentRss/140974.htmlhttp://www.shnenglu.com/tankzhouqiang/services/trackbacks/140974.html

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

/*naive string-matching algorithm,T涓哄師濮嬪瓧絎︿覆錛孭涓洪渶瑕佸尮閰嶇殑瀛楃涓?/
void naiveMatch(char *T,char *P)
{
    int lenT,lenP,i,j;
    lenT=strlen(T);
    lenP=strlen(P);
    if(lenT<lenP)/*闇瑕佸尮閰嶇殑瀛楃涓叉瘮鍘熷瀛楃涓茶繕瑕侀暱鍑洪敊*/
    {
        perror("input error");
        return ;
    }
    for(i=0;i<(lenT-lenP+1);i++)
    {
        for(j=0;j<lenP;j++)
        {
            if(T[i+j]!=P[j])
                break;
        }
        if(j==lenP)
            printf("string match at place %d\n",i);
    }
}

/*kmp棰勫鐞嗛渶瑕佺殑鍖歸厤涓?/
void getNext(char *p,int next[])
{
    int len,i,j;
    len=strlen(p);
    next[0]=0;
    for(i=1;i<len;i++)
    {
        j=next[i-1];
        while((p[i-1]!=p[j-1])&&(j!=0))
        {
            j=next[j-1];
//            printf("j= %d\n",j);
        }
        next[i]=j+1;
        printf("next[i]=%d\n",next[i]);
    }
}

/*kmp瀛楃涓插尮閰嶇畻娉?/
void kmp(char *t,char *p,int next[])
{
    int lent,lenp,i,j;
    lent=strlen(t);
    lenp=strlen(p);
    i=0;
    j=0;
    while(i<(lent))
    {
        if((j==-1)||(t[i]==p[j]))
        {
            i++;
            j++;

//            printf("i=%d,j=%d\n",i,j);
        }
        else
        {
           
//            printf("in else i=%d,j=%d\n",i,j);
            j=next[j]-1;
        }
        if(j==(lenp))
        {
            printf("match at place %d\n",i-lenp);
        }
    }
}

int main()
{
    char p[10]="0001";
    char t[20]="000010001010001";
    naiveMatch(t,p);/*嫻嬭瘯鏅氬瓧絎︿覆鍖歸厤綆楁硶*/
    char p1[10]="abaabcac";
    char t1[20]="acabaabaabcacaabc";
    int len=strlen(p1);
    int *next;
    next=(int*)malloc(sizeof(int)*len);
    getNext(p1,next);
    kmp(t1,p1,next);/*嫻嬭瘯kmp綆楁硶*/


  
    getNext(p,next);
    kmp(t,p,next);/*嫻嬭瘯kmp綆楁硶*/
}



鍛ㄥ己 2011-03-02 12:23 鍙戣〃璇勮
]]>
久久精品国产99国产电影网| 性欧美大战久久久久久久| 久久久国产精品亚洲一区| 亚洲国产日韩综合久久精品| 漂亮人妻被中出中文字幕久久| 精品国产乱码久久久久软件| 亚洲中文字幕无码久久2017| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 欧美激情精品久久久久| 久久久精品久久久久久| 国产亚洲精品美女久久久| 久久丫忘忧草产品| 国产精品久久久久久久久鸭| 色偷偷88欧美精品久久久 | 国产精品久久久久一区二区三区 | 久久人人爽人人爽人人片AV高清| 久久国产精品99精品国产| 伊人久久五月天| 久久国产精品免费一区| 久久精品国产一区| 国产精品久久久久AV福利动漫| 日本精品久久久久久久久免费| 久久久久久a亚洲欧洲aⅴ| 久久精品国产亚洲AV无码偷窥| 日本久久久久久久久久| 久久精品国产欧美日韩| 亚洲午夜精品久久久久久人妖| 婷婷久久久亚洲欧洲日产国码AV | 波多野结衣AV无码久久一区| 日本精品久久久久影院日本| 久久丝袜精品中文字幕| 久久国产精品二国产精品| 久久99精品国产| 久久91精品国产91久久户| 国产精品久久久久AV福利动漫| 久久99精品国产自在现线小黄鸭 | 国产精品无码久久综合| 99久久精品日本一区二区免费| 91视频国产91久久久| 久久99国产精品久久99果冻传媒| 久久精品一区二区三区不卡|