本文實例為大家分享了java數據結構之漢諾塔的具體代碼,供大家參考,具體內容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package p02.動態鏈表; import p01.動態數組.stack; public class linkedstack<e> implements stack<e> { private linkedlist<e> list; public linkedstack(){ list= new linkedlist<>(); } @override public void push(e e) { // todo 自動生成的方法存根 list.addfrist(e); } @override public e pop() { // todo 自動生成的方法存根 return list.removefrist(); } @override public boolean isempty() { // todo 自動生成的方法存根 return list.isempty(); } @override public e peek() { // todo 自動生成的方法存根 return list.getfrist(); } @override public int getsize() { // todo 自動生成的方法存根 return list.getsize(); } @override public void clear() { // todo 自動生成的方法存根 list.clear(); } @override public string tostring() { // todo 自動生成的方法存根 return list.tostring(); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
//用前邊實現的鏈棧去實現漢諾塔 package p03.遞歸; import p02.動態鏈表.linkedstack; public class hano { public static void main(string[] args) { // string x = "x"; //原始盤 // string y = "y"; //借助盤 // string z = "z"; //最終盤 // move(x,y,z,n); int n= 10 ; linkedstack<integer> stackx= new linkedstack(); for ( int i=n;i>= 1 ;i--){ stackx.push(i); } linkedstack<integer> stacky= new linkedstack(); linkedstack<integer> stackz= new linkedstack(); move(stackx,stacky,stackz,n); system.out.println(stackx); system.out.println(stackz); } //定義三個棧,實現其移動 public static void move(linkedstack<integer> x,linkedstack<integer> y, linkedstack<integer> z, int level) { if (level== 1 ){ z.push(x.pop()); } else { move(x,z,y,level- 1 ); z.push(x.pop()); move(y,x,z,level- 1 ); } } //只打印移動過程。 /*public static void move(string x, string y, string z, int level) { if(level==1){ system.out.println(x+"->"+z); return; } move(x,z,y,level-1); system.out.println(x+"->"+z); move(y,x,z,level-1); }*/ } |
以上所述是小編給大家介紹的java數據結構之漢諾塔詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!