码迷,mamicode.com
首页 > 其他好文 > 详细

行编辑程序、括号匹配检验

时间:2014-05-04 18:55:11      阅读:423      评论:0      收藏:0      [点我收藏+]

标签:c++   数据结构   行编辑   括号匹配检验   

行编辑程序、括号匹配检验程序都是利用的栈的数据结构。而这两个

小程序也非常好的显示了栈先进后出的思想。由于程序本身很简短、清晰,所

以也就不做多的解释了,直接上代码了。

行编辑程序:

#include<iostream>
#include<stack>
using namespace std;
int main()
{
	stack<char> sta;
	char ch = getchar();
	while(ch!=EOF)
	{

	while(ch!=EOF&&ch!=‘\n‘)
	{
		switch (ch)
		{
		case‘#‘://出栈
			sta.pop();
			break;
		case ‘@‘://清空栈
			while (!sta.empty())
			{
				sta.pop();
			}
			break;
		default://入栈
			sta.push(ch);
			break;
		}
		ch = getchar();
	}
	while (!sta.empty())
	{
		cout<<sta.top();
		sta.pop();
	}
	cout<<endl;

	if (ch!=EOF)
	{
		ch = getchar();
	}
	}
return 0;
}
括号匹配检验程序:

#include<iostream>
#include<stack>
#include<string>
using namespace std;
#define aa ‘(‘
bool fun()
{
	string ss;
	cin>>ss;
	stack<char> sta;
	//左括号枚举类型
	char LBracket[] = {‘(‘,‘{‘, ‘[‘,‘<‘};
	//右括号枚举类型
	char RBracket[] = {‘)‘, ‘}‘,‘]‘, ‘>‘};
	string::iterator iter = ss.begin();
	for(;iter!=ss.end();iter++)
	{
		if(find(LBracket,LBracket+4,(*iter)))//左括号则入栈
		{
			sta.push((*iter));
			continue;
		}
		if(find(RBracket,RBracket+4,(*iter)))//右括号则出栈
		{
			if(sta.top() == (*iter))
			{
				sta.pop();
				continue;
			}
			else
			{
				return false;
			}
		}
		return false;
	}
	return true;
}

int main()
{
	if(fun())
	{
	 cout<<"匹配!"<<endl;
	}
	else
	{
	 cout<<"不匹配!"<<endl;
	}
}



行编辑程序、括号匹配检验,布布扣,bubuko.com

行编辑程序、括号匹配检验

标签:c++   数据结构   行编辑   括号匹配检验   

原文地址:http://blog.csdn.net/yyc1023/article/details/24958089

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!