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

C語(yǔ)言解決堆棧括號(hào)匹配問(wèn)題示例詳解

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

1.括號(hào)匹配問(wèn)題就是當(dāng)遇到{( [這些左括號(hào)的時(shí) 將括號(hào)字符入棧

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

如果不匹配就直接結(jié)束程序(即括號(hào)匹配失?。?/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說(shuō)明匹配成功 輸出0匹配不成功

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

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

相關(guān)文章

最新評(píng)論

贞丰县| 营山县| 常州市| 遂昌县| 吉安市| 鱼台县| 衡阳市| 和龙市| 深水埗区| 西峡县| 陇西县| 会理县| 昌黎县| 习水县| 沈阳市| 繁昌县| 道孚县| 冕宁县| 云南省| 柞水县| 巴青县| 河曲县| 彰化县| 临漳县| 武清区| 麻阳| 曲周县| 岫岩| 静海县| 改则县| 大新县| 铅山县| 天等县| 全椒县| 顺义区| 衡山县| 尚义县| 平果县| 宜黄县| 日喀则市| 衢州市|