数据结构+机试题——栈的应用

括号匹配问题

(写的时候,自己给自己挖了个坑,把“=”写成“==”了) 

#include<stdio.h>
#include<stack>
using namespace std;
stack<int> S;//定义一个堆栈
char input[110];
char output[110];
int main(){
	while(scanf("%s",input)!=EOF){
		int i;
		for(i=0;input[i]!=0;i++){
			if(input[i]=='('){ //若遇到左括号 
				S.push(i);//将其数组下标放入堆栈中
				output[i]=' '; 
			}
			
			else if(input[i]==')'){
				if(S.empty()==false){//若遇到右括号 且堆栈非空 
					S.pop();//从栈中弹出与之匹配的左括号
					output[i]=' '; 
				}
				else output[i]='?';//若堆栈为空,则无法找到左括号与其匹配 
			}
			
			else output[i]=' ';//若为其他字符,与括号匹配无关,输出为空格 
			
		}
		
		while(!S.empty()){//当字符串遍历完成后,尚留在堆栈中的左括号无法匹配 
			output[S.top()]='$';
			S.pop();
		}
	//	output[i]=0;
		puts(input);
		puts(output);
	}
	return 0;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值