首页 > 代码库 > 行编辑程序、括号匹配检验

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

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

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

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

行编辑程序:

#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;
	}
}