数据结构-栈的应用(进制转换,括号匹配)

进制转换目标效果:


进制转换功能代码:

//数制转换程序
void Conversion()
{
    // TODO (#1#): 这里实现数制转换程序
	printf("请输入十进制数:");
	scanf("%d",&n);
	while(n)
	{
		Push(s,n%8);
		n/=8;
	}
	printf("\n该十进制对应的八进制数为:");
	while(!StackEmpty(s))
	{
		Pop(s,x);
		printf("%d",x);
	}
	printf("\n");
}


括号匹配目标效果:


括号匹配功能代码:

//检验括号匹配
void Match()
{
    // TODO (#1#): 这里实现检验括号匹配的程序
	printf("\n\n请输入括号表达式:");
	char c_array[20];
	int i=0;
	scanf("%s",c_array);
	int l=strlen(c_array);    //求字符数组长度
	while(i<l&&i>=0)
	{
		switch(c_array[i])
		{
		case '{':
		case '[':
		case '(':
			Push(s,c_array[i]);     //左括号入栈
			break;
		case '}':
			Pop(s,x);
			if(x!='{')
			{
				printf("\n匹配失败");
				i=-2;
			}
			break;
		case ']':
			Pop(s,x);
			if(x!='[')
			{
				printf("\n匹配失败");
				i=-2;
			}
			break;
		case ')':
			Pop(s,x);
			if(x!='(')
			{
				printf("\n匹配失败");
				i=-2;
			}
			break;
		}
		i++;
	}
	if(i>0)
		printf("\n匹配成功");
}


源码链接: 点击打开链接

注意:
1.这里没有贴具体对栈操作的代码,是因为代码和上一篇博文栈操作的代码一样。
2.加一个小插曲,这里的括号匹配是英文括号匹配,中文括号会有乱码等问题,别问我怎么知道的,一脸懵逼.jpg。
3.源码中两个功能一起运行的,所以括号匹配输入字符串使用了scanf,使用gets会出现问题(上边进制转换带来的问题),但是如果单独作为一个功能时,gets也能正确运行。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值