Singleton妯″紡鏄父鐢ㄧ殑璁捐妯″紡涔嬩竴錛屼絾鏄瀹炵幇涓涓湡姝e疄鐢ㄧ殑璁捐妯″紡鍗翠篃涓嶆槸浠跺鏄撶殑浜嬫儏銆?br />鏍囧噯鐨勫疄鐜?/pre>
榪欐槸鏁欑涔︿笂浣跨敤鐨勬柟娉曘傜湅璧鋒潵娌℃湁浠涔堥棶棰橈紝鍏跺疄鍖呭惈寰堝鐨勯棶棰樸備笅闈㈡垜浠竴涓竴涓殑瑙e喅銆?/pre>
闂涓 鑷姩鍨冨溇鍥炴敹涓婇潰鐨勭▼搴忓繀欏昏浣忓湪紼嬪簭緇撴潫鐨勬椂鍊欙紝閲婃斁鍐呭瓨銆備負(fù)浜?jiǎn)璁╁畠鑷姩鐨勯噴鏀惧唴瀛樺Q屾垜浠紩鍏uto_ptr鏀瑰彉瀹冦?/pre>
闂浜? 澧炲姞妯℃澘鍦ㄦ垜鐨勪竴涓伐紼嬩腑錛屾湁澶氫釜鐨凷ingleton綾伙紝瀵筍ingleton綾伙紝鎴戦兘瑕佸疄鐜頒笂闈㈣繖涓鍒囷紝榪欒鎴戣寰楃儲(chǔ)姝諱簡(jiǎn)銆備簬鏄垜鎯沖埌浜?jiǎn)妯℃澘鏉ュ畬鎴悩q欎簺閲?br />澶嶇殑宸ヤ綔銆?br />鐜板湪鎴戜滑瑕佹坊鍔犳湰鏂囦腑鏈鍚稿紩浜哄崟浠跺疄鐜幫細(xì)1 #include <memory>
2 using namespace std;
3 using namespace C2217::Win32;
4
5 namespace C2217
6 {
7 namespace Pattern
8 {
9 template <class T>
10 class Singleton
11 {
12 public:
13 static inline T* instance();
14
15 private:
16 Singleton(void){}
17 ~Singleton(void){}
18 Singleton(const Singleton&){}
19 Singleton & operator= (const Singleton &){}
20
21 static auto_ptr<T> _instance;
22 };
23
24 template <class T>
25 auto_ptr<T> Singleton<T>::_instance;
26
27 template <class T>
28 inline T* Singleton<T>::instance()
29 {
30 if( 0== _instance.get())
31 {
32 _instance.reset ( new T);
33 }
34
35 return _instance.get();
36 }
37
38 //Class that will implement the singleton mode,
39 //must use the macro in it's delare file
40 #define DECLARE_SINGLETON_CLASS( type ) \
41 friend class auto_ptr< type >;\
42 friend class Singleton< type >;
43 }
44 }闂涓? 綰跨▼瀹夊叏涓婇潰鐨勭▼搴忓彲浠ラ傚簲鍗曠嚎紼嬬殑紼嬪簭銆備絾鏄鏋滄妸瀹冪敤鍒板綰跨▼鐨勭▼搴忓氨浼?xì)鍙戠敓闂銆備富瑕佺殑闂鍦ㄤ簬鍚屾椂鎵ц_instance.reset ( new T);
灝變細(xì)鍚屾椂浜х敓涓や釜鏂扮殑瀵硅薄錛岀劧鍚庨┈涓婇噴鏀句竴涓紝榪欒窡Singleton妯″紡鐨勬湰鎰忎笉絎︺傛墍浠ワ紝浣犻渶瑕佹洿鍔犲畨鍏ㄧ殑鐗堟湰錛?/pre>1 #include <memory>
2 using namespace std;
3 #include "Interlocked.h"
4 using namespace C2217::Win32;
5
6 namespace C2217
7 {
8 namespace Pattern
9 {
10 template <class T>
11 class Singleton
12 {
13 public:
14 static inline T* instance();
15
16 private:
17 Singleton(void){}
18 ~Singleton(void){}
19 Singleton(const Singleton&){}
20 Singleton & operator= (const Singleton &){}
21
22 static auto_ptr<T> _instance;
23 static CResGuard _rs;
24 };
25
26 template <class T>
27 auto_ptr<T> Singleton<T>::_instance;
28
29 template <class T>
30 CResGuard Singleton<T>::_rs;
31
32 template <class T>
33 inline T* Singleton<T>::instance()
34 {
35 if( 0 == _instance.get() )
36 {
37 CResGuard::CGuard gd(_rs);
38 if( 0== _instance.get())
39 {
40 _instance.reset ( new T);
41 }
42 }
43 return _instance.get();
44 }
45
46 //Class that will implement the singleton mode,
47 //must use the macro in it's delare file
48 #define DECLARE_SINGLETON_CLASS( type ) \
49 friend class auto_ptr< type >;\
50 friend class Singleton< type >;
51 }
52 }CresGuard 綾諱富瑕佺殑鍔熻兘鏄嚎紼嬭闂悓姝?浠g爜濡備笅錛?/pre>
姣斿浣犳湁涓涓渶瑕佸疄鐜板崟浠舵ā寮忕殑綾伙紝灝卞簲璇ヨ繖鏍峰疄鐜幫細(xì)
鍦ㄤ嬌鐢ㄧ殑鏃跺欏緢綆鍗曪紝璺熶竴鑸殑Singleton瀹炵幇鐨勬柟娉曟病鏈変粈涔堜笉鍚屻?/pre>
涓涓畝鍗曠殑Singleton妯″紡鐨勫疄鐜幫紝鍙互鐪嬪埌C++璇█鑳屽悗闅愯棌鐨勪赴瀵岀殑璇剰錛屾垜甯屾湜鏈変漢鑳藉疄鐜頒竴涓洿濂界殑Singleton璁╁ぇ瀹跺涔?fàn)銆?/pre>
鍏朵腑sum涓篶arry涓哄綋鍓嶄綅涔嬪墠鐨勫箋?/p>
str[len-1-i]-'0'鏄〃紺哄皢瀛楃鐨刟scii鐮佸噺鍘?鐨刟scii鐮侊紝鏈鍚庡嚭鏉ョ殑鏁板瓧灝辨槸闇瑕佺殑鏁板瓧銆?/p>
姣忔*10鐨勮瘽灝辨妸褰撳墠浣嶅線鍓嶇Щ浜?jiǎn)銆?/p>
*鏀硅繘浜?jiǎn)绠楁硶锛屽鍔犱簡(jiǎn)鏀寔璐熸晭图屼互鍙?qiáng)紕板埌鏈夐棶棰樼殑瀛楃灝變細(xì)throw exception
閲嶆柊鍙堢湅浜?jiǎn)涓閬嶄簩鍙夋爲(wèi)(Binary Tree)錛屽彂鐜板緢澶氫笢瑗胯嚜宸辮繕娌℃湁寮勬槑鐧斤紝鍘熸潵涓夌閬嶅巻鏂瑰紡榪樹笉鏄嚜宸辨兂璞′腑鐨勯偅鏍?/p>
鍓嶅簭閬嶅巻(PreOrder)鏄厛杈撳嚭鑷繁錛岀劧鍚庡乏錛屾渶鍚庡彸銆?/p>
涓簭閬嶅巻(InOrder)鏄厛宸︼紝鍐嶈緭鍑?guó)檱繁锛屾渶鍚庡彸銆?/p>
鍚庡簭閬嶅巻(PostOrder)鏄厛宸︼紝鍐嶅彸錛屾渶鍚庤緭鍑?guó)檱繁銆?/p>
鎵璋撶殑XX閬嶅巻灝辨槸鎸囨妸鑷繁鏀懼湪鍝釜浼樺厛浣嶇疆涓婏紝鑰屼笉鏄寚浠庡摢閲屽紑濮嬮亶鍘嗐?/p>
綆椾笅鏉ュ叾瀹炴悳绱㈠尮閰嶄篃鍙互鐢ㄨ繖涓柟娉曪紝鍩烘湰涓婂氨鏄互閫掑綊褰㈡垚鐨勩?/p>
鍙﹀榪橀渶瑕佺爺絀朵竴涓婦FS(Depth First Search)浠ュ強(qiáng)BFS(Breadth First Search)鐨勭畻娉曘?/p>
鍗曚緥妯″紡鏈夎澶氱瀹炵幇鏂規(guī)硶錛屽湪C++涓紝鐢氳嚦鍙互鐩存帴鐢ㄤ竴涓叏灞鍙橀噺鍋氬埌榪欎竴鐐癸紝浣嗚繖鏍風(fēng)殑浠g爜鏄劇殑寰堜笉浼橀泤銆?浣跨敤鍏ㄥ眬瀵硅薄鑳藉淇濊瘉鏂逛究鍦拌闂疄渚嬶紝浣嗘槸涓嶈兘淇濊瘉鍙0鏄庝竴涓璞?#8212;—涔熷氨鏄闄や簡(jiǎn)涓涓叏灞瀹炰緥澶栵紝浠嶇劧鑳藉垱寤虹浉鍚岀被鐨?strong>鏈湴瀹炰緥銆?/p>
銆婅璁℃ā寮忋嬩竴涔︿腑緇欏嚭浜?jiǎn)涓縐嶅緢涓嶉敊鐨勫疄鐜幫紝瀹氫箟涓涓?strong>鍗曚緥綾?/strong>錛屼嬌鐢ㄧ被鐨?strong>縐佹湁闈?rùn)鎬佹寚閽堝彉閲?/strong>鎸囧悜綾葷殑鍞竴瀹炰緥錛屽茍鐢ㄤ竴涓?strong>鍏湁鐨勯潤(rùn)鎬佹柟娉?/strong>鑾峰彇璇ュ疄渚嬨?/p>
鍗曚緥妯″紡閫氳繃綾繪湰韜潵綆$悊鍏跺敮涓瀹炰緥錛岃繖縐嶇壒鎬ф彁渚涗簡(jiǎn)瑙e喅闂鐨勬柟娉曘傚敮涓鐨勫疄渚嬫槸綾葷殑涓涓櫘閫氬璞★紝浣嗚璁¤繖涓被鏃訛紝璁╁畠鍙兘鍒涘緩涓涓疄渚嬪茍鎻愪緵 瀵規(guī)瀹炰緥鐨勫叏灞璁塊棶銆傚敮涓瀹炰緥綾籗ingleton鍦ㄩ潤(rùn)鎬佹垚鍛樺嚱鏁頒腑闅愯棌鍒涘緩瀹炰緥鐨勬搷浣溿備範(fàn)鎯笂鎶婅繖涓垚鍛樺嚱鏁板彨鍋欼nstance()錛屽畠鐨勮繑鍥炲兼槸鍞?涓瀹炰緥鐨勬寚閽堛?/p>
瀹氫箟濡備笅錛?/p>
鐢ㄦ埛璁塊棶鍞竴瀹炰緥鐨勬柟娉曞彧鏈塆etInstance()鎴愬憳鍑芥暟銆傚鏋滀笉閫氳繃榪欎釜鍑芥暟錛屼換浣曞垱寤哄疄渚嬬殑灝濊瘯閮藉皢澶辮觸錛屽洜涓虹被鐨勬瀯閫犲嚱鏁版槸縐佹湁鐨勩侴etInstance()浣跨敤鎳掓儼鍒濆鍖?/strong>錛屼篃灝辨槸璇村畠鐨勮繑鍥炲兼槸褰撹繖涓嚱鏁伴嬈¤璁塊棶鏃惰鍒涘緩鐨勩傝繖鏄竴縐嶉槻寮硅璁?#8212;—鎵鏈塆etInstance()涔嬪悗鐨勮皟鐢ㄩ兘榪斿洖鐩稿悓瀹炰緥鐨勬寚閽堬細(xì)
CSingleton* p1 = CSingleton :: GetInstance();
CSingleton* p2 = p1->GetInstance();
CSingleton & ref = * CSingleton :: GetInstance();
瀵笹etInstance紼嶅姞淇敼錛岃繖涓璁℃ā鏉夸究鍙互閫傜敤浜庡彲鍙樺瀹炰緥鎯呭喌錛屽涓涓被鍏佽鏈澶氫簲涓疄渚嬨?/p>
鍗曚緥綾籆Singleton鏈変互涓嬬壒寰侊細(xì)
瀹冩湁涓涓寚鍚戝敮涓瀹炰緥鐨勯潤(rùn)鎬佹寚閽坢_pInstance錛屽茍涓旀槸縐佹湁鐨勶紱
瀹冩湁涓涓叕鏈夌殑鍑芥暟錛屽彲浠ヨ幏鍙栬繖涓敮涓鐨勫疄渚嬶紝騫朵笖鍦ㄩ渶瑕佺殑鏃跺欏垱寤鴻瀹炰緥錛?/p>
瀹冪殑鏋勯犲嚱鏁版槸縐佹湁鐨勶紝榪欐牱灝變笉鑳戒粠鍒鍒涘緩璇ョ被鐨勫疄渚嬨?/p>
澶у鏁版椂鍊欙紝榪欐牱鐨勫疄鐜伴兘涓嶄細(xì)鍑虹幇闂銆傛湁緇忛獙鐨勮鑰呭彲鑳戒細(xì)闂紝m_pInstance鎸囧悜鐨勭┖闂翠粈涔堟椂鍊欓噴鏀懼憿錛熸洿涓ラ噸鐨勯棶棰樻槸錛岃瀹炰緥鐨勬瀽鏋勫嚱鏁頒粈涔堟椂鍊欐墽琛岋紵
濡傛灉鍦ㄧ被鐨勬瀽鏋勮涓轟腑鏈夊繀欏葷殑鎿嶄綔錛屾瘮濡傚叧闂枃浠訛紝閲婃斁澶栭儴璧勬簮錛岄偅涔堜笂闈㈢殑浠g爜鏃犳硶瀹炵幇榪欎釜瑕佹眰銆傛垜浠渶瑕佷竴縐嶆柟娉曪紝姝e父鐨勫垹闄よ瀹炰緥銆?/p>
鍙互鍦ㄧ▼搴忕粨鏉熸椂璋冪敤GetInstance()錛屽茍瀵硅繑鍥炵殑鎸囬拡鎺夌敤delete鎿嶄綔銆傝繖鏍峰仛鍙互瀹炵幇鍔熻兘錛屼絾涓嶄粎寰堜笐闄嬶紝鑰屼笖瀹規(guī)槗鍑洪敊銆傚洜涓鴻繖鏍風(fēng)殑闄勫姞浠g爜寰堝鏄撹蹇樿錛岃屼笖涔熷緢闅句繚璇佸湪delete涔嬪悗錛屾病鏈変唬鐮佸啀璋冪敤GetInstance鍑芥暟銆?/p>
涓涓Ε鍠勭殑鏂規(guī)硶鏄榪欎釜綾昏嚜宸辯煡閬撳湪鍚堥傜殑鏃跺欐妸鑷繁鍒犻櫎錛屾垨鑰呰鎶婂垹闄よ嚜宸辯殑鎿嶄綔鎸傚湪鎿嶄綔緋葷粺涓殑鏌愪釜鍚堥傜殑鐐逛笂錛屼嬌鍏跺湪鎭板綋鐨勬椂鍊欒鑷姩鎵ц銆?/p>
鎴戜滑鐭ラ亾錛岀▼搴忓湪緇撴潫鐨勬椂鍊欙紝緋葷粺浼?strong>鑷姩鏋愭瀯鎵鏈夌殑鍏ㄥ眬鍙橀噺銆備簨瀹炰笂錛岀郴緇熶篃浼?xì)鏋愭瀯鎵鏈夌殑綾葷殑闈?rùn)鎬佹垚鍛樺彉閲忥紝灝卞儚榪欎簺闈?rùn)鎬佹垚鍛樹篃鏄叏灞鍙橀噺涓鏍楓傚埄鐢ㄨ繖涓壒寰侊紝鎴戜滑鍙互鍦ㄥ崟渚嬬被涓畾涔変竴涓繖鏍風(fēng)殑闈?rùn)鎬佹垚鍛樺彉閲忥紝鑰屽畠鐨勫敮涓宸ヤ綔灝辨槸鍦ㄦ瀽鏋勫嚱鏁頒腑鍒犻櫎鍗曚緥綾葷殑瀹炰緥銆傚涓嬮潰鐨勪唬鐮佷腑鐨凜Garbo綾伙紙Garbo鎰忎負(fù)鍨冨溇宸ヤ漢錛夛細(xì)
綾籆Garbo琚畾涔変負(fù)CSingleton鐨勭鏈夊唴宓岀被錛屼互闃茶綾昏鍦ㄥ叾浠栧湴鏂規(guī)互鐢ㄣ?/p>
紼嬪簭榪愯緇撴潫鏃訛紝緋葷粺浼?xì)璋冪敤CSingleton鐨勯潤(rùn)鎬佹垚鍛楪arbo鐨勬瀽鏋勫嚱鏁幫紝璇ユ瀽鏋勫嚱鏁頒細(xì)鍒犻櫎鍗曚緥鐨勫敮涓瀹炰緥銆?/p>
浣跨敤榪欑鏂規(guī)硶閲婃斁鍗曚緥瀵硅薄鏈変互涓嬬壒寰侊細(xì)
鍦ㄥ崟渚嬬被鍐呴儴瀹氫箟涓撴湁鐨勫祵濂楃被錛?/p>
鍦ㄥ崟渚嬬被鍐呭畾涔夌鏈夌殑涓撻棬鐢ㄤ簬閲婃斁鐨勯潤(rùn)鎬佹垚鍛橈紱
鍒╃敤紼嬪簭鍦ㄧ粨鏉熸椂鏋愭瀯鍏ㄥ眬鍙橀噺鐨勭壒鎬э紝閫夋嫨鏈緇堢殑閲婃斁鏃舵満錛?/p>
浣跨敤鍗曚緥鐨勪唬鐮佷笉闇瑕佷換浣曟搷浣滐紝涓嶅繀鍏沖績(jī)瀵硅薄鐨勯噴鏀俱?/p>
(鍑哄錛?a >http://hi.baidu.com/csudada/blog/item/208fb0f56bb61266dcc47466.html)
榪涗竴姝ョ殑璁ㄨ
浣嗘槸娣誨姞涓涓被鐨勯潤(rùn)鎬佸璞★紝鎬繪槸璁╀漢涓嶅お婊℃剰錛屾墍浠ユ湁浜虹敤濡備笅鏂規(guī)硶鏉ラ噸鐜板疄鐜板崟渚嬪拰瑙e喅瀹冪浉搴旂殑闂錛屼唬鐮佸涓?/div>
浣跨敤灞閮ㄩ潤(rùn)鎬佸彉閲忥紝闈炲父寮哄ぇ鐨勬柟娉曪紝瀹屽叏瀹炵幇浜?jiǎn)鍗曚緥鐨勭壱?guī)э紝鑰屼笖浠g爜閲忔洿灝戯紝涔熶笉鐢ㄦ媴蹇?jī)鍗曚緥閿姣佺殑闂銆?/p>
浣嗕嬌鐢ㄦ縐嶆柟娉曚篃浼?xì)鍑虹幇闂锛屽綋濡備笅鏂规硶鋴社敤鍗曚緥鏃堕棶棰樻潵浜?jiǎn)錛?/p>
Singleton singleton = Singleton :: GetInstance();
榪欎箞鍋氬氨鍑虹幇浜?jiǎn)涓涓被鎷瘋礉鐨勯棶棰橈紝榪欏氨榪濊儗浜?jiǎn)鍗曚緥鐨勭壱?guī)с備駭鐢熻繖涓棶棰樺師鍥犲湪浜庯細(xì)緙栬瘧鍣ㄤ細(xì)涓虹被鐢熸垚涓涓粯璁ょ殑鏋勯犲嚱鏁幫紝鏉ユ敮鎸佺被鐨勬嫹璐濄?/p>
鏈鍚庢病鏈夊姙娉曪紝鎴戜滑瑕佺姝㈢被鎷瘋礉鍜岀被璧嬪鹼紝紱佹紼嬪簭鍛樼敤榪欑鏂瑰紡鏉ヤ嬌鐢ㄥ崟渚嬶紝褰撴椂棰嗗鐨勬剰鎬濇槸GetInstance()鍑芥暟榪斿洖涓涓寚閽堣屼笉鏄繑鍥炰竴涓紩鐢紝鍑芥暟鐨勪唬鐮佹敼涓哄涓嬶細(xì)
鍏充簬Singleton(const Singleton); 鍜?Singleton & operate = (const Singleton&); 鍑芥暟錛岄渶瑕佸0鏄庢垚縐佺敤鐨勶紝騫朵笖鍙0鏄庝笉瀹炵幇銆傝繖鏍鳳紝濡傛灉鐢ㄤ笂闈㈢殑鏂瑰紡鏉ヤ嬌鐢ㄥ崟渚嬫椂錛屼笉綆℃槸鍦ㄥ弸鍏冪被涓繕鏄叾浠栫殑錛岀紪璇戝櫒閮芥槸鎶ラ敊銆?/p>
涓嶇煡閬撹繖鏍風(fēng)殑鍗曚緥綾繪槸鍚﹁繕浼?xì)鏈夐棶棰樺Q屼絾鍦ㄧ▼搴忎腑榪欐牱瀛愪嬌鐢ㄥ凡緇忓熀鏈病鏈夐棶棰樹簡(jiǎn)銆?/p>
錛堝嚭澶勶細(xì)http://snailbing.blogbus.com/logs/45398975.html錛?/p>
浼樺寲Singleton綾伙紝浣夸箣閫傜敤浜庡崟綰跨▼搴旂敤
Singleton浣跨敤鎿嶄綔絎ew涓哄敮涓瀹炰緥鍒嗛厤瀛樺偍絀洪棿銆傚洜涓簄ew鎿嶄綔絎︽槸綰跨▼瀹夊叏鐨勶紝鍦ㄥ綰跨▼搴旂敤涓綘鍙互浣跨敤姝よ璁℃ā鏉匡紝浣嗘槸鏈変竴涓?strong>緙洪櫡錛?灝辨槸鍦ㄥ簲鐢ㄧ▼搴忕粓姝箣鍓嶅繀欏繪墜宸ョ敤delete鎽ф瘉瀹炰緥銆傚惁鍒欙紝涓嶄粎瀵艱嚧鍐呭瓨婧㈠嚭錛岃繕瑕侀犳垚涓嶅彲棰勬祴鐨勮涓猴紝鍥犱負(fù)Singleton鐨勬瀽鏋勫嚱鏁板皢鏍規(guī)湰涓嶄細(xì) 琚皟鐢ㄣ傝岄氳繃浣跨敤鏈湴闈?rùn)鎬佸疄渚嬩唬鏇垮姩鎬佸疄渚嬶紝鍗曠嚎紼嬪簲鐢ㄥ彲浠ュ緢瀹規(guī)槗閬垮厤榪欎釜闂銆備笅闈㈡槸涓庝笂闈㈢殑GetInstance()紼嶆湁涓嶅悓鐨勫疄鐜幫紝榪欎釜瀹炵幇涓?闂ㄧ敤浜庡崟綰跨▼搴旂敤錛?/p>
鏈湴闈?rùn)鎬佸璞″疄渚媔nst鏄涓嬈¤皟鐢℅etInstance()鏃惰鏋勯狅紝涓鐩翠繚鎸佹椿鍔ㄧ姸鎬佺洿鍒板簲鐢ㄧ▼搴忕粓姝紝鎸囬拡m_pInstance鍙樺緱澶氫綑騫朵笖鍙互浠庣被瀹氫箟涓垹闄ゆ帀錛屼笌鍔ㄦ佸垎閰嶅璞′笉鍚岋紝闈?rùn)鎬佸璞″綋搴旂敤紼嬪簭緇堟鏃惰鑷姩閿姣佹帀錛屾墍浠ュ氨涓嶅繀鍐嶆墜鍔ㄩ攢姣佸疄渚嬩簡(jiǎn)銆?/p>
錛堝嚭澶勶細(xì)http://blog.csdn.net/pingnanlee/archive/2009/04/20/4094313.aspx錛?/p>
浠g爜瀛︿範(fàn)錛堜粠http://apps.hi.baidu.com/share/detail/32113057寮曠敤錛?/p>
鍏朵腑姣旇緝闅劇悊瑙g殑鏄痩inka*& head錛屼紶鍏ョ殑鍏跺疄灝辨槸linka *鐨勭被鍨嬪氨鍙互浜?jiǎn)锛宭inka *鏄〃紺簂inka綾誨瀷鐨勬寚閽堬紝&琛ㄧずhead鐨勫湴鍧錛屼篃灝辨槸linka鐨勬寚閽?/p>
鍙﹀闇瑕佺啛鎮(zhèn)夌殑鏄痟ead->next錛屽叾瀹炴湁鐐瑰儚C#涓殑head.Next錛屽氨鏄痵tructure涓殑涓涓睘鎬?
棣栧厛瀹氫箟3涓寚閽堬紝鍒嗗埆鏄墠涓悗錛岀劧鍚庡綋涓棿閭d釜鎸囬拡闈炵┖錛屽氨鏄綋鍓嶄笉鏄┖錛屽氨鍋氬驚鐜噷鐨勪簨鎯?/p>
娉ㄦ剰鐨勬槸榪欎釜綆楁硶閲岄潰next鏄湪寰幆閲岄潰璧嬪肩殑
姣忔寰幆閮芥妸current鎸囧悜previous浜?jiǎn)锛岀劧鍚庡ぇ瀹堕兘寰鍚庣Щ涓涓紝next=current->next蹇呴』鍦╟urrent鏀瑰彉鏂瑰悜涔嬪墠鍋氾紝鍚﹀垯鏀瑰彉浜?jiǎn)鏂瑰悜涔嬪悗current鐨刵ext灝卞彉鎴恜revious浜?jiǎn)銆?/p>
鏈鍚庤煩鍑哄驚鐜箣鍚庯紝灝唄eader鐨刵ext棣栧厛緗┖錛屽洜涓篽ead鍙樻垚浜?jiǎn)鏈鍚庝竴涓猲ode浜?jiǎn)銆傜劧鍚巋ead灝卞彉鎴愪簡(jiǎn)previous錛屽洜涓哄綋鏃?current鍜宯ext閮戒負(fù)NULL浜?jiǎn)锛屽彧鏈塸revious涓烘渶鍚庝竴涓妭鐐癸紙鎴栬呰榪欐椂鍊欏簲璇ユ槸絎竴涓潪絀鴻妭鐐癸紝涔熷氨鏄痟ead錛?/p>
緇堜簬鎶婃暣涓畻娉曠悊瑙d簡(jiǎn)涓閬嶏紝鏈鍚庢兂鎯沖叾瀹炴尯綆鍗曪紝浣嗘槸鑳界敤c++鍐欏嚭鏉ヤ篃涓嶅お瀹規(guī)槗錛岀壒鍒槸鍦ㄩ潰璇曠殑鏃跺欍?/p>
鍐嶅鍔犱竴涓掑綊鐨勫崟閾捐〃鍙嶈漿鐨勬柟娉曪細(xì)