最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言解決堆棧括號匹配問題示例詳解

 更新時間:2021年11月18日 11:18:10   作者:xr415  
這篇文章主要為大家介紹了C語言堆棧括號匹配問題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.括號匹配問題就是當(dāng)遇到{( [這些左括號的時 將括號字符入棧

2.當(dāng)遇到右括號時判斷棧頂元素是不是與左括號匹配如果匹配就出棧

如果不匹配就直接結(jié)束程序(即括號匹配失?。?/p>

首先構(gòu)建棧

struct STACK
{
	char num[10];
	int top;
};
struct STACK* creatstack()
{
	struct STACK* stack = new struct STACK;
	assert(stack);
	stack->top = -1;//0 -1這些根據(jù)直接所習(xí)慣去標(biāo)記棧頂 -1只是先置加 0后置加
	return stack;
}
void push(struct STACK* stack, char ch)
{
	stack->num[++stack->top] = ch;
 
}
void pop(struct STACK* stack)
{
	stack->top--;
}

調(diào)用匹配函數(shù)

 如果返回true即匹配成功 返回false即匹配失敗

bool Match(struct STACK* stack, char* match)
{
	int len = strlen(match);
	for (int i = 0; i < len; ++i)
	{
		if (match[i] == '{' || match[i] == '[' || match[i] == '(')
		{
			push(stack, match[i]);
		} 
		if (match[i] == '}' )
		{
			if (stack->num[stack->top] == '{')
			{
				pop(stack); 
			}
			else
			{
				return false;
			}
		}
		if (match[i] == ')' )
		{
			if (stack->num[stack->top] == '(')
			{
				pop(stack); 
			}
			else
			{
				return false;
			} 
		} 
		if (match[i] == ']' )
		{
			if (stack->num[stack->top] == '[')
			{
				pop(stack); 
			}
			else
			{
				return false;
			}
		}
	} 
	if (stack->top == -1)
		return true;
	else
	{
		return false;
	}
}

代碼調(diào)用

如果是輸出1說明匹配成功 輸出0匹配不成功

int main()
{
	struct STACK* stack = creatstack();
	char str[10] = "()[][]{}";	
	cout << Match(stack ,str)<< endl;
}

以上就是C語言堆棧括號匹配問題示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C語言堆棧括號匹配的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

东方市| 西盟| 准格尔旗| 抚松县| 宜丰县| 崇礼县| 遂宁市| 汉阴县| 高平市| 通化县| 游戏| 西青区| 宣汉县| 遂宁市| 松原市| 灵宝市| 三门县| 凌海市| 格尔木市| 丹巴县| 桦甸市| 夏邑县| 张家口市| 吉木乃县| 全南县| 云浮市| 临潭县| 乌兰浩特市| 抚松县| 固始县| 宿迁市| 滕州市| 东阿县| 吉安市| 梧州市| 德钦县| 常山县| 荔浦县| 乐昌市| 荣成市| 柯坪县|