溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JAVA數(shù)據(jù)結(jié)構(gòu)之漢諾塔代碼的示例分析

發(fā)布時間:2021-08-20 09:54:52 來源:億速云 閱讀:106 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)JAVA數(shù)據(jù)結(jié)構(gòu)之漢諾塔代碼的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體內(nèi)容如下

package p02.動態(tài)鏈表;

import p01.動態(tài)數(shù)組.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();
	}
	
}
//用前邊實現(xiàn)的鏈棧去實現(xiàn)漢諾塔
package p03.遞歸;

import p02.動態(tài)鏈表.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);

	}
	//定義三個棧,實現(xiàn)其移動
	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);
		
	}*/

}

感謝各位的閱讀!關(guān)于“JAVA數(shù)據(jù)結(jié)構(gòu)之漢諾塔代碼的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI