栈的应用---将十进制转换为八进制
void conversion()
{
SqStack S;
InitStack(S);
int n,e;
scanf("%d", &n);
while (n)
{
push(S, n % 8);
n = n / 8;
}
while (!StackEmpty(S)) //栈非空时依次出栈输出
{
pop(S, e);
printf("%d", e);
}
}
汉诺塔递归问题
void Hanoi(int n, char X, char Y, char Z) //将n个盘子从X借助Y全部移动到Z上,大盘子不允许在小盘子上面
{
if (n == 1)
Move(X, 1, Z); //只有一个直接移动
else
{
Hanoi(n - 1, X, Z, Y); //将n-1个从X上借助Z移动到Y上
Move(X, n, Z); //将最后一个从X移动到Z上
Hanoi(n - 1, Y, X, Z); //将n-1个从Y上借助X移动到Z上
}
}
设计一个算法判断表达式中左右括号是否匹配
//初始化栈
void InitStack(SqStack &S)
//判断栈是否为空
bool StackEmpty(SqStack &S)
//新元素入栈
bool Push(SqStack& S,char x)
//栈顶元素出栈,用x返回
bool Pop(SqStack& S, char &x)
Status BracketCheck(char* str)
{
SqStack(S);
InitStack(S);