第三章 栈、队列、数组

该博客主要探讨了数据结构中栈和队列的应用,包括如何将十进制数转换为八进制,解决汉诺塔递归问题,设计检查表达式中括号匹配的算法,以及处理输入整数序列的栈操作。同时,提供了两种不同的括号匹配算法,分别针对包含多种字符和仅包含括号的表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈的应用---将十进制转换为八进制

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);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值