打印本页内容

isFull()全栈

 点击:次  发布日期:2019-11-27 08:15    发布人:365bet体育存款

堆和递归问题的解决是递归的。例如,TowerofHanoi问题具有标记为A,B和C的三列。A行有64个板,从小到大下载。
目的是将所有板从A柱移动到C柱。
移动条件是一次只能移动一个板,并且解决河内塔问题的递归算法不能在移动时放在小板上。如果n = 1,则板直接从A列移动到C列。
否则,请遵循以下三个步骤:使用C柱进行过渡,并将板(n-1)从支柱A移至支柱B。将支柱A的最后一块板直接移动到支柱C。使用列A进行迁移。将B列板(n-1)移动到C列。
堆栈和递归问题的解决方案是递归的。例如,求解TowerofHanoi voidHanoi问题(intn,charA,charB,charC){if(n == 1)printf(将%s,A移至%s,C);否则{Hanoi(n-1,A,C,B); printf(将%s,A移动到%s,C);河内(n-1,B,A,C);}}3日元Hanno塔移动堆叠和递归问题解决是递归的是的例如,解决TowerofHanoi问题。Hanno Tower移动堆栈和4个磁盘的递归堆栈,voidHanoi问题(intn,chara,charb,charc){StackS; initStack(S); Nodeq; q。
n = n; q。
A = a; q。
B = b; q。
C = c;推(S,q);
StackEmpty(S)){Pop(S,q); n = q。
n; a = q。
A; b = q。
B; c = q。
C;如果(n = 1)printf(“ Move%c”,a,“ a%c”,c);否则{q。
n = n-1; q。
A = b; q。
B = a; q。
C = c;推(S,q); q。
n = 1; q。
A = a; q。
B = b; q。
C = c;推(S,q); q。
n = n-1; q。
A = a; q。
B = c; q。
C = b; Push(S,q);}}}StructNode{intn; charA,B,C;};(3,A,B,C)AC(2,A,C,B)(1,A,B,C)(2,B,A,C)(1,A,B,C)(1,A,C,B)(1,C,A,B)(1,B,C,A)(1,B,A,C)(1,A,B,C)A-CA-BC-BB-AB-CA-C和河内的非递归塔(TowerofHanoi)(3,A,B,C)AC(2,A,C,B)(对1,A,B问题,C的递归变换解)(2,B,A,C)(1,A,B,C)(1,A,C,B)(1,C,A,B)(1,B,C,A)(1,B,A,C)(1,A,B,C)A-CA-BC-BB-AB-CA-Ctop(3,A,B,C)递归电池的空电池和顶电池将递归成为河内塔的非递归问题(3,A,B,C)AC(2,A,C,B)(1,A,B,C)(2,B,A,C)(1,A,B,C)(1,A,C,B)(1,C,A,B)(1,B,C,A)(1,B,A,C)(1,A,B,C)A-CA-BC-BB-AB-CA-Ctop(1,A,B,C)(2,B,A,C)(2,A,C,B)上层电池和递归电池它们是递归河内塔(3,A,B,C)AC(2),A,C,B)(1,A,B,C)(将是2,B,A,C的解)(1,A,B,C)(1,A,C,B)(1C,A,B)(1,B,C,A)(1,B,A,C)(1,A,B,C)A-CA