⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 括号配对.cpp

📁 输入一个式子
💻 CPP
字号:
#include<iostream>
#include<cstring>
#include "assert.h"
#define NULL 0
using namespace std;
class stack
{
public:
	char *elmlist;
	char top;
	char msize;
	stack(int sz=20)
	{
		msize=sz;
		elmlist=new char[msize];
		assert(elmlist!=NULL);
		top=-1;
	}
	~stack()
	{delete []elmlist;}
	void push(char i);
	char pop();
	char gettop();
	void makeempty();
	int isfull(){return top==msize;}
	int isempty(){return top==-1;}

};

void stack::push(char i)
{
	assert(!isfull());
	top++;
	elmlist[top]=i;
}

char stack::pop()
{
	assert(!isempty());
		return elmlist[top--];
	
}
char stack::gettop()
{
	assert(!isempty());
	return elmlist[top];
}


void stack::makeempty()
{
	top=-1;
}


void match(char *s)
{
	stack a(10);
	int i=0;
	char k=s[i];
	
		while(k!='\0')
		{	 k=s[i];
		   if(k=='(')
		   {
			   a.push(k);i++;
		   }
		   else if(k== ')')
		   {
			   if(!a.isempty())
				  {
					  a.pop();
					  i++;
				  }
			      else 
				  {
					  cout<<"括号配对错误!"<<endl;
				       exit(0);
				  }
		   }
           else i++;
		}
	
		if(a.isempty())
			cout<<"括号配对成功!"<<endl;
		else
			cout<<"括号配对错误!"<<endl;
}


void main()
{
	char s[20];//={"5+8*(1-2)/3\0"};
	cout<<"请输入一个式子:";
cin.getline(s,20);
	match(s);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -