1.1 概论First In Last Out,顺序栈和链栈,六种方法,声明使用方式。
#include<stack>
stack<int> stk;
s.empty()如果栈为空返回true,否则返回false
s.size()返回栈中元素的个数
s.pop()删除栈顶元素但不返回其值
s.top()返回栈顶的元素,但不删除该元素
s.push()在栈顶压入新元素
import java.util.Stack;
Stack stack = new Stack(); // 创建堆栈对象
stack.push(数据) 在栈顶压入新元素
stack.pop() 删除栈顶元素并且返回其值
stack.empty() 如果栈为空返回true,否则返回false
stack.peek() 返回栈顶的元素,但不删除该元素
stack.search() 查找stack里的元素,返回元素到栈顶的距离。
要移动n个盘子
public class HanoiRecursion {
public static void main(String[] args){
hanoi(4,'A','B','C');
}
public static void hanoi(int n,char A,char B,char C){
if(n==1){
move(A,C);
}
else{
hanoi(n-1,A,C,B);
move(A,C);
hanoi(n-1,B,A,C);
}
}
public static void move(char A,char C){
System.out.println(A+"->"+C);
}
}
public class HanoiStack {
public static void main(String[] args) {
Stack hanoi = new Stack();
hanoi.push(new Problem(4, 'A', 'B', 'C'));
Problem myProblem = null;
while (!hanoi.isEmpty() && (myProblem = (Problem) hanoi.pop()) != null) {
if (myProblem.n == 1) {
System.out.println(myProblem.A+"->"+myProblem.C);
} else {
hanoi.push(new Problem(myProblem.n-1, myProblem.B, myProblem.A, myProblem.C));
hanoi.push(new Problem(1, myProblem.A, myProblem.B, myProblem.C));
hanoi.push(new Problem(myProblem.n-1, myProblem.A, myProblem.C, myProblem.B));
}
}
}
}
class Problem {
int n;
char A, B, C;
public Problem(int n, char A, char B, char C) {
this.n = n;
this.A = A;
this.B = B;
this.C = C;
}
}
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123