当前位置:首页 » 编程软件 » 堆栈的编程

堆栈的编程

发布时间: 2024-07-06 00:05:40

❶ 用C语言代码来编写含汉诺塔问题,利用堆栈来实现.求代码

算法思想
对于汉诺塔问题,当只移动一个圆盘时,直接将圆盘从 A 针移动到 C 针。若移动的圆盘为 n(n>1),则分成几步走:把 (n-1) 个圆盘从 A 针移动到 B 针(借助 C 针);A 针上的最后一个圆盘移动到 C 针;B 针上的 (n-1) 个圆盘移动到 C 针(借助 A 针)。每做一遍,移动的圆盘少一个,逐次递减,最后当 n 为 1 时,完成整个移动过程。
因此,解决汉诺塔问题可设计一个递归函数,利用递归实现圆盘的整个移动过程,问题的解决过程是对实际操作的模拟。
程序代码
#include <stdio.h>
int main()
{
int hanoi(int,char,char,char);
int n,counter;
printf("Input the number of diskes:");
scanf("%d",&n);
printf("\n");
counter=hanoi(n,'A','B','C');
return 0;
}
int hanoi(int n,char x,char y,char z)
{
int move(char,int,char);
if(n==1)
move(x,1,z);
else
{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
return 0;
}
int move(char getone,int n,char putone)
{
static int k=1;
printf("%2d:%3d # %c---%c\n",k,n,getone,putone);
if(k++%3==0)
printf("\n");
return 0;
}

java涓镄勫爢镙堥梾棰桡纻

鍏跺疄杩欎簺锘虹镄勪笢瑗跨绣涓婃湁涓嶅皯, 浣犲彲浠ュ氩幓csdn,闾i噷鍙浠ュ﹀埌涓嶅皯濂戒笢瑗 ,鎴戝氨鐩存帴缁欎綘绮樿创杩囨潵浜
java涓鍫嗘爤(stack)鍜屽爢(heap)
涓銆佸爢镙(stack)鍜屽爢(heap)锛
锛1锛夊唴瀛桦垎閰岖殑绛栫暐
銆銆鎸夌収缂栬疟铡熺悊镄勮傜偣,绋嫔簭杩愯屾椂镄勫唴瀛桦垎閰嶆湁涓夌岖瓥鐣,鍒嗗埆鏄闱欐佺殑,镙埚纺镄,鍜屽爢寮忕殑.

銆闱欐佸瓨鍌ㄥ垎閰嶆槸鎸囧湪缂栬疟镞跺氨鑳界‘瀹氭疮涓鏁版嵁鐩镙囧湪杩愯屾椂鍒荤殑瀛桦偍绌洪棿闇姹,锲犺屽湪缂栬疟镞跺氨鍙浠ョ粰浠栦滑鍒嗛厤锲哄畾镄勫唴瀛樼┖闂.杩欑嶅垎閰岖瓥鐣ヨ佹眰绋嫔簭浠g爜涓涓嶅厑璁告湁鍙鍙樻暟鎹缁撴瀯(姣斿傚彲鍙樻暟缁)镄勫瓨鍦,涔熶笉鍏佽告湁宓屽楁垨钥呴掑綊镄勭粨鏋勫嚭鐜,锲犱负瀹冧滑閮戒细瀵艰嚧缂栬疟绋嫔簭镞犳硶璁$畻鍑嗙‘镄勫瓨鍌ㄧ┖闂撮渶姹.

銆镙埚纺瀛桦偍鍒嗛厤涔熷彲绉颁负锷ㄦ佸瓨鍌ㄥ垎閰,鏄鐢变竴涓绫讳技浜庡爢镙堢殑杩愯屾爤𨱒ュ疄鐜扮殑.鍜岄润镐佸瓨鍌ㄥ垎閰岖浉鍙,鍦ㄦ爤寮忓瓨鍌ㄦ柟妗堜腑,绋嫔簭瀵规暟鎹鍖虹殑闇姹傚湪缂栬疟镞舵槸瀹屽叏链鐭ョ殑,鍙链夊埌杩愯岀殑镞跺欐墠鑳藉熺煡阆,浣嗘槸瑙勫畾鍦ㄨ繍琛屼腑杩涘叆涓涓绋嫔簭妯″潡镞,蹇呴’鐭ラ亾璇ョ▼搴忔ā鍧楁墍闇镄勬暟鎹鍖哄ぇ灏忔墠鑳藉熶负鍏跺垎閰嶅唴瀛.鍜屾垜浠鍦ㄦ暟鎹缁撴瀯镓镡熺煡镄勬爤涓镙,镙埚纺瀛桦偍鍒嗛厤鎸夌収鍏堣繘钖庡嚭镄勫师鍒栾繘琛屽垎閰嶃

銆闱欐佸瓨鍌ㄥ垎閰嶈佹眰鍦ㄧ紪璇戞椂鑳界煡阆撴墍链夊彉閲忕殑瀛桦偍瑕佹眰,镙埚纺瀛桦偍鍒嗛厤瑕佹眰鍦ㄨ繃绋嬬殑鍏ュ彛澶勫繀椤荤煡阆撴墍链夌殑瀛桦偍瑕佹眰,钥屽爢寮忓瓨鍌ㄥ垎閰嶅垯涓挞棬璐熻矗鍦ㄧ紪璇戞椂鎴栬繍琛屾椂妯″潡鍏ュ彛澶勯兘镞犳硶纭瀹氩瓨鍌ㄨ佹眰镄勬暟鎹缁撴瀯镄勫唴瀛桦垎閰,姣斿傚彲鍙橀暱搴︿覆鍜屽硅薄瀹炰緥.鍫嗙敱澶х墖镄勫彲鍒╃敤鍧楁垨绌洪棽鍧楃粍鎴,鍫嗕腑镄勫唴瀛桦彲浠ユ寜镦т换镒忛‘搴忓垎閰嶅拰閲婃斁.
锛2锛夊爢鍜屾爤镄勬瘆杈
銆銆涓婇溃镄勫畾涔変粠缂栬疟铡熺悊镄勬暀𨱒愪腑镐荤粨钥屾潵,闄ら润镐佸瓨鍌ㄥ垎閰崭箣澶,閮芥樉寰楀緢锻嗘澘鍜岄毦浠ョ悊瑙,涓嬮溃鎾囧紑闱欐佸瓨鍌ㄥ垎閰,闆嗕腑姣旇缉鍫嗗拰镙:

銆浠庡爢鍜屾爤镄勫姛鑳藉拰浣灭敤𨱒ラ氢织镄勬瘆杈,鍫嗕富瑕佺敤𨱒ュ瓨鏀惧硅薄镄勶纴镙堜富瑕佹槸鐢ㄦ潵镓ц岀▼搴忕殑.钥岃繖绉崭笉钖屽张涓昏佹槸鐢变簬鍫嗗拰镙堢殑鐗圭偣鍐冲畾镄:

銆鍦ㄧ紪绋嬩腑锛屼緥濡侰/C++涓锛屾墍链夌殑鏂规硶璋幂敤閮芥槸阃氲繃镙堟潵杩涜岀殑,镓链夌殑灞閮ㄥ彉閲,褰㈠纺鍙傛暟閮芥槸浠庢爤涓鍒嗛厤鍐呭瓨绌洪棿镄勚傚疄闄呬笂涔熶笉鏄浠涔埚垎閰,鍙鏄浠庢爤椤跺悜涓婄敤灏辫,灏卞ソ镀忓伐铡备腑镄勪紶阃佸甫(conveyor belt)涓镙,Stack Pointer浼氲嚜锷ㄦ寚寮曚綘鍒版斁涓滆タ镄勪綅缃,浣犳墍瑕佸仛镄勫彧鏄鎶娄笢瑗挎斁涓嬫潵灏辫.阃鍑哄嚱鏁扮殑镞跺欙纴淇鏀规爤鎸囬拡灏卞彲浠ユ妸镙堜腑镄勫唴瀹归攒姣.杩欐牱镄勬ā寮忛熷害链蹇,褰撶劧瑕佺敤𨱒ヨ繍琛岀▼搴忎简.闇瑕佹敞镒忕殑鏄,鍦ㄥ垎閰岖殑镞跺,姣斿备负涓涓鍗冲皢瑕佽皟鐢ㄧ殑绋嫔簭妯″潡鍒嗛厤鏁版嵁鍖烘椂,搴斾簨鍏堢煡阆撹繖涓鏁版嵁鍖虹殑澶у皬,涔熷氨璇存槸铏界劧鍒嗛厤鏄鍦ㄧ▼搴忚繍琛屾椂杩涜岀殑,浣嗘槸鍒嗛厤镄勫ぇ灏忓氩皯鏄纭瀹氱殑,涓嶅彉镄,钥岃繖涓"澶у皬澶氩皯"鏄鍦ㄧ紪璇戞椂纭瀹氱殑,涓嶆槸鍦ㄨ繍琛屾椂.

銆 鍫嗘槸搴旂敤绋嫔簭鍦ㄨ繍琛岀殑镞跺栾锋眰镎崭綔绯荤粺鍒嗛厤缁栾嚜宸卞唴瀛桡纴鐢变簬浠庢搷浣灭郴缁熺$悊镄勫唴瀛桦垎閰,镓浠ュ湪鍒嗛厤鍜岄攒姣佹椂閮借佸崰鐢ㄦ椂闂达纴锲犳ょ敤鍫嗙殑鏁堢巼闱炲父浣.浣嗘槸鍫嗙殑浼樼偣鍦ㄤ簬,缂栬疟鍣ㄤ笉蹇呯煡阆撹佷粠鍫嗛噷鍒嗛厤澶氩皯瀛桦偍绌洪棿锛屼篃涓嶅繀鐭ラ亾瀛桦偍镄勬暟鎹瑕佸湪鍫嗛噷锅灭暀澶氶暱镄勬椂闂,锲犳,鐢ㄥ爢淇濆瓨鏁版嵁镞朵细寰楀埌镟村ぇ镄勭伒娲绘с备簨瀹炰笂,闱㈠悜瀵硅薄镄勫氭佹,鍫嗗唴瀛桦垎閰嶆槸蹇呬笉鍙灏戠殑,锲犱负澶氭佸彉閲忔墍闇镄勫瓨鍌ㄧ┖闂村彧链夊湪杩愯屾椂鍒涘缓浜嗗硅薄涔嫔悗镓嶈兘纭瀹.鍦–++涓锛岃佹眰鍒涘缓涓涓瀵硅薄镞讹纴鍙闇鐢╪ew锻戒护缂栧埗鐩稿叧镄勪唬镰佸嵆鍙銆傛墽琛岃繖浜涗唬镰佹椂锛屼细鍦ㄥ爢閲岃嚜锷ㄨ繘琛屾暟鎹镄勪缭瀛.褰撶劧锛屼负杈惧埌杩欑岖伒娲绘э纴蹇呯劧浼氢粯鍑轰竴瀹氱殑浠d环:鍦ㄥ爢閲屽垎閰嶅瓨鍌ㄧ┖闂存椂浼氲姳鎺夋洿闀跨殑镞堕棿锛佽繖涔熸f槸瀵艰嚧鎴戜滑鍒氭墠镓璇寸殑鏁堢巼浣庣殑铡熷洜,鐪嬫潵鍒楀畞钖屽织璇寸殑濂,浜虹殑浼樼偣寰寰涔熸槸浜虹殑缂虹偣,浜虹殑缂虹偣寰寰涔熸槸浜虹殑浼樼偣(鏅晘).
锛3锛塉VM涓镄勫爢鍜屾爤
銆銆JVM鏄锘轰簬鍫嗘爤镄勮櫄𨰾熸満.JVM涓烘疮涓鏂板垱寤虹殑绾跨▼閮藉垎閰崭竴涓鍫嗘爤.涔熷氨鏄璇,瀵逛簬涓涓狫ava绋嫔簭𨱒ヨ达纴瀹幂殑杩愯屽氨鏄阃氲繃瀵瑰爢镙堢殑镎崭綔𨱒ュ畬鎴愮殑銆傚爢镙堜互甯т负鍗曚綅淇濆瓨绾跨▼镄勭姸镐併侸VM瀵瑰爢镙埚彧杩涜屼袱绉嶆搷浣:浠ュ抚涓哄崟浣岖殑铡嬫爤鍜屽嚭镙堟搷浣溿

銆銆 鎴戜滑鐭ラ亾,镆愪釜绾跨▼姝e湪镓ц岀殑鏂规硶绉颁负姝ょ嚎绋嬬殑褰揿墠鏂规硶.鎴戜滑鍙鑳戒笉鐭ラ亾,褰揿墠鏂规硶浣跨敤镄勫抚绉颁负褰揿墠甯с傚綋绾跨▼婵娲讳竴涓狫ava鏂规硶,JVM灏变细鍦ㄧ嚎绋嬬殑Java鍫嗘爤閲屾柊铡嫔叆涓涓甯с傝繖涓甯ц嚜铹舵垚涓轰简褰揿墠甯.鍦ㄦゆ柟娉曟墽琛屾湡闂,杩欎釜甯у皢鐢ㄦ潵淇濆瓨鍙傛暟,灞閮ㄥ彉閲,涓闂磋$畻杩囩▼鍜屽叾浠栨暟鎹.杩欎釜甯у湪杩欓噷鍜岀紪璇戝师鐞嗕腑镄勬椿锷ㄧ邯褰旷殑姒傚康鏄宸涓嶅氱殑.

銆銆 浠嶫ava镄勮繖绉嶅垎閰嶆満鍒舵潵鐪,鍫嗘爤鍙埚彲浠ヨ繖镙风悊瑙:鍫嗘爤(Stack)鏄镎崭綔绯荤粺鍦ㄥ缓绔嬫煇涓杩涚▼镞舵垨钥呯嚎绋(鍦ㄦ敮鎸佸氱嚎绋嬬殑镎崭綔绯荤粺涓鏄绾跨▼)涓鸿繖涓绾跨▼寤虹珛镄勫瓨鍌ㄥ尯锘燂纴璇ュ尯锘熷叿链夊厛杩涘悗鍑虹殑鐗规с

銆 姣忎竴涓狫ava搴旂敤閮藉敮涓瀵瑰簲涓涓狫VM瀹炰緥锛屾疮涓涓瀹炰緥鍞涓瀵瑰簲涓涓鍫嗐傚簲鐢ㄧ▼搴忓湪杩愯屼腑镓鍒涘缓镄勬墍链夌被瀹炰緥鎴栨暟缁勯兘鏀惧湪杩欎釜鍫嗕腑,骞剁敱搴旂敤镓链夌殑绾跨▼鍏变韩.璺烠/C++涓嶅悓锛孞ava涓鍒嗛厤鍫嗗唴瀛樻槸镊锷ㄥ埯濮嫔寲镄勚侸ava涓镓链夊硅薄镄勫瓨鍌ㄧ┖闂撮兘鏄鍦ㄥ爢涓鍒嗛厤镄勶纴浣嗘槸杩欎釜瀵硅薄镄勫紩鐢ㄥ嵈鏄鍦ㄥ爢镙堜腑鍒嗛厤,涔熷氨鏄璇村湪寤虹珛涓涓瀵硅薄镞朵粠涓や釜鍦版柟閮藉垎閰嶅唴瀛桡纴鍦ㄥ爢涓鍒嗛厤镄勫唴瀛桦疄闄呭缓绔嬭繖涓瀵硅薄锛岃屽湪鍫嗘爤涓鍒嗛厤镄勫唴瀛桦彧鏄涓涓鎸囧悜杩欎釜鍫嗗硅薄镄勬寚阍(寮旷敤)钥屽凡銆

❸ 鍫嗘爤镄勫熀链鎸囦护链夊摢浜涳纻

1銆丮PS锛堣繘镙堟寚浠わ级锛氩皢杩愮畻缁撴灉阃佸叆镙埚瓨鍌ㄥ櫒镄勭涓娈碉纴钖屾椂灏嗗厛鍓嶉佸叆镄勬暟鎹渚濇$Щ鍒版爤镄勪笅涓娈点
2銆丮RD锛堣绘爤鎸囦护锛夛细灏嗘爤瀛桦偍鍣ㄧ殑绗涓娈垫暟鎹锛堟渶钖庤繘镙堢殑鏁版嵁锛夎诲嚭涓旇ユ暟鎹缁х画淇濆瓨鍦ㄦ爤瀛桦偍鍣ㄧ殑绗涓娈碉纴镙埚唴镄勬暟鎹涓嶅彂鐢熺Щ锷ㄣ
3銆丮PP锛埚嚭镙堟寚浠わ级锛氩皢镙埚瓨鍌ㄥ櫒镄勭涓娈垫暟鎹锛堟渶钖庤繘镙堢殑鏁版嵁锛夎诲嚭涓旇ユ暟鎹浠庢爤涓娑埚け锛屽悓镞跺皢镙堜腑鍏跺畠鏁版嵁渚濇′笂绉汇
涓銆佸爢镙堟傝堪锛
鍫嗘爤鍏跺疄涓嶅彧鏄鎴戜滑骞冲父镒忎箟涓婃墍璋撶殑鍏锋湁钖庤繘鍏埚嚭鐗规х殑鏁版嵁缁撴瀯銆备弗镙兼潵璁插苟涓嶅瓨鍦ㄥ爢镙堣繖镙蜂竴绉岖粨鏋勶纴鍙鏄鍦ㄦ棩甯稿伐浣滀腑鎴戜滑灏嗗墠杩扮殑杩欑嶆暟鎹缁撴瀯绉颁负鍫嗘爤缃浜嗭纴浣嗗叾瀹炵‘鍒囩殑璇村簲璇ュ彨锅氭爤 (Stack) 锛岃屽爢 (Heap) 鍏跺疄鏄鍙︿竴绉嶅厑璁搁殢镒忚块梾镄勬暟鎹瀛桦偍绌洪棿銆
浜屻丳LC姒傝堪锛
鍙缂栫▼阃昏緫鎺у埗鍣锛屾槸涓绉嶉噰鐢ㄤ竴绫诲彲缂栫▼镄勫瓨鍌ㄥ櫒锛岀敤浜庡叾鍐呴儴瀛桦偍绋嫔簭锛屾墽琛岄昏緫杩愮畻銆侀‘搴忔带鍒躲佸畾镞躲佽℃暟涓庣畻链镎崭綔绛夐溃钖戠敤鎴风殑鎸囦护锛屽苟阃氲繃鏁板瓧鎴栨ā𨰾熷纺杈揿叆/杈揿嚭鎺у埗钖勭岖被鍨嬬殑链烘版垨鐢熶骇杩囩▼銆

热点内容
c语言k值 发布:2024-11-26 10:48:53 浏览:870
Java霸王大陆 发布:2024-11-26 10:44:52 浏览:704
乐高机器人怎么编程 发布:2024-11-26 10:36:12 浏览:374
进化脚本 发布:2024-11-26 10:27:38 浏览:858
人生的脚本图片 发布:2024-11-26 10:22:32 浏览:500
winform源码下载 发布:2024-11-26 10:11:57 浏览:986
猫咪国外访问 发布:2024-11-26 09:32:05 浏览:618
威立信监控原始密码是多少 发布:2024-11-26 09:24:06 浏览:489
超凡先锋选择不了服务器该怎么办 发布:2024-11-26 09:15:56 浏览:338
搭建ff服务器喝茶 发布:2024-11-26 09:10:09 浏览:847