欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

如果不匹配就直接結(jié)束程序(即括號匹配失敗)

首先構(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í)慣去標記棧頂 -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語言堆棧括號匹配問題示例詳解的詳細內(nèi)容,更多關(guān)于C語言堆棧括號匹配的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 八皇后問題的相關(guān)C++代碼解答示例

    八皇后問題的相關(guān)C++代碼解答示例

    這篇文章主要介紹了八皇后問題的相關(guān)C++代碼解答示例,文中包括ACM競賽的八皇后相關(guān)知識的練習(xí)實例,需要的朋友可以參考下
    2015-08-08
  • Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫的詳細過程

    Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫的詳細過程

    這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫的方法,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • OpenCV圖像處理之常見的圖像灰度變換

    OpenCV圖像處理之常見的圖像灰度變換

    這篇文章主要介紹了OpenCV圖像處理之常見的圖像灰度變換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • QT判斷兩個日期時間的大小

    QT判斷兩個日期時間的大小

    本文主要介紹了QT判斷兩個日期時間的大小,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C語言嵌入informix基礎(chǔ)入門示例講解

    C語言嵌入informix基礎(chǔ)入門示例講解

    這篇文章主要介紹了C語言嵌入informix基礎(chǔ)方法,大家參考使用
    2013-11-11
  • C++ Qt開發(fā)之CheckBox多選框組件的用法詳解

    C++ Qt開發(fā)之CheckBox多選框組件的用法詳解

    Qt是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點介紹CheckBox單行輸入框組件的使用方法,需要的朋友可以參考下
    2023-12-12
  • C++快速排序算法簡明理解

    C++快速排序算法簡明理解

    快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經(jīng)常被采用,再加上快速排序思想----分治法也確實實用,因此很多軟件公司的筆試面試,包括像騰訊,微軟等知名IT公司都喜歡考這個,還有大大小的程序方面的考試如軟考,考研中也常常出現(xiàn)快速排序的身影
    2022-05-05
  • 關(guān)于C++中vector的兩個小tips分享

    關(guān)于C++中vector的兩個小tips分享

    這篇文章主要給大家介紹了關(guān)于C++中vector的兩個小tips,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • c++ STL庫容器之集合set代碼實例

    c++ STL庫容器之集合set代碼實例

    在本篇文章里小編給大家整理的是關(guān)于c++STL庫容器之集合set代碼實例,需要的朋友們可以參考下。
    2020-03-03
  • C語言輕松實現(xiàn)掃雷小游戲

    C語言輕松實現(xiàn)掃雷小游戲

    掃雷是一款經(jīng)典的小游戲,這篇文章主要為大家詳細介紹了C語言輕松實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論