如何结束栈的初始化过程(C语言)

本文探讨了在实现栈的应用,如进制转换、括号匹配等过程中遇到的数据类型问题,特别是初始化阶段如何设定合理的停止标志,避免特定数值无法入栈的情况。作者提出使用ESC键作为停止符的解决方案,但指出此法仅限于个位数输入。

本文为原创,若有错误欢迎批评指正!

 

最近在尝试着把栈的一些应用,例如进制转换、括号匹配、逆波兰计算取、中后缀转换等写成一个大的demo,于是被数据类型的问题搞得略纠结。

主要的问题在于初始化,如果栈中元素是int类型的,初始化的时候用户通过scanf函数输入整型,需要设置一个停止的标识。很多例程中采用数字0或者其他数字作为停止符,这样的问题就是0永远都没有机会出现在栈中。那么问题就来了,怎么设定一个可以检测的标志,结束栈的输入初始化呢?

 

一. 选取一个永远不可能入栈的按键

最容易想到的就是ESC键。对应的ASCII码为27,注意此时不能使用标准IO,要用控制台IO。

 

#include <windows.h>
#include <conio.h>

while(1)
{
	c = _getch();
	if(c==27)
		break;
	else
	{
		e = (int)(c-'0');
		Push(S,e);//入栈
	}
}


缺点:只能输入个位数,而且[](){}之类的都存储为ASCII码值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值