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

c語言通過棧判斷括號匹配是否配對

 更新時間:2023年09月22日 09:16:25   作者:gnip  
前面實現(xiàn)了棧的基本數(shù)據(jù)結構,這里來做一個聯(lián)系,用棧來解決一道比較常見的算法題,就是括號配對是否滿足規(guī)則,文中有相關的代碼示例供大家參考,需要的朋友可以參考下

實現(xiàn)

描述

給定一組括號,判斷是否滿足配對。

代碼

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#define bool char 
#define true 1
#define MAX_LEN 10
#define false 0
typedef  char ElementType;
typedef struct Stack {
	int top;
	ElementType stackList[MAX_LEN];
} Stack;
bool fn(char arr[], int len, Stack* S);
bool push(Stack* S, ElementType data);
bool pop(Stack* S, ElementType* x);
bool intStack(Stack* S);
int main() {
	Stack S;
	intStack(&S);
	char brackList[] = {'(', '{','(',')','}','{','}','}' };
	printf("%d", fn(brackList, sizeof(brackList) / sizeof(brackList[0]), &S));
}
bool fn(char arr[], int len, Stack* S) {
	for (int i = 0; i < len; i++) {
		if (arr[i] == '{' || arr[i] == '(') {
			push(S,arr[i]);
			printf("%c", arr[i]);
		}
		else {
			if (S->top == 0) {
				return false;
			}
			ElementType topData;
			pop(S, &topData);
			if (topData == '(' && arr[i] != ')') {
				return false;
			}
			else if (topData == '{' && arr[i] != '}') {
				return false;
			}
		}
	}
	if (S->top == 0) {
		return true;
	}
	return false;
}
//初始化
bool intStack(Stack* S) {
	for (int i = 0; i < MAX_LEN; i++) {
		S->stackList[i] = 0;
	}
	S->top = 0;
	return true;
}
//入棧
bool push(Stack* S,ElementType data) {
	S->top++;
	S->stackList[S->top] = data;
	return true;
}
//出棧
bool pop(Stack* S, ElementType *x) {
	*x = S->stackList[S->top];
	S->stackList[S->top] = 0;
	S->top--;
	return true;
}

到此這篇關于c語言通過棧判斷括號匹配是否配對的文章就介紹到這了,更多相關c語言判斷是否配對內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 學生成績管理系統(tǒng)C語言代碼實現(xiàn)

    學生成績管理系統(tǒng)C語言代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)添加桌面右鍵新建菜單

    C++實現(xiàn)添加桌面右鍵新建菜單

    本文給大家匯總了3個版本的C++實現(xiàn)添加桌面右鍵新建菜單的代碼,陸陸續(xù)續(xù)寫的,有需要的小伙伴可以根據(jù)自己的需求來選擇
    2016-01-01
  • C語言動態(tài)規(guī)劃多種背包問題分析講解

    C語言動態(tài)規(guī)劃多種背包問題分析講解

    背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高
    2022-04-04
  • opencv幀差法找出相差大的圖像

    opencv幀差法找出相差大的圖像

    這篇文章主要為大家詳細介紹了opencv幀差法找出相差大的圖像,包含訪問mat的像素值,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 詳解Matlab中自帶的Java操作合集

    詳解Matlab中自帶的Java操作合集

    其實Matlab中也有一些自帶的Java操作,例如:獲取鼠標在全屏位置、獲取當前剪切板內容、獲取鼠標處像素顏色等,本文總結了七個這樣的操作,感興趣的可以了解一下
    2022-03-03
  • 詳解C++ 拷貝構造函數(shù)和賦值運算符

    詳解C++ 拷貝構造函數(shù)和賦值運算符

    本文主要介紹了拷貝構造函數(shù)和賦值運算符的區(qū)別,以及在什么時候調用拷貝構造函數(shù)、什么情況下調用賦值運算符。最后,簡單的分析了下深拷貝和淺拷貝的問題。有需要的朋友可以看下
    2016-12-12
  • C++面試八股文之STL標準模板庫使用詳解

    C++面試八股文之STL標準模板庫使用詳解

    這篇文章主要為大家介紹了C++面試八股文之STL標準模板庫使用詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 淺析string 與char* char[]之間的轉換

    淺析string 與char* char[]之間的轉換

    與char*不同的是,string不一定以NULL('\0')結束。string長度可以根據(jù)length()得到,string可以根據(jù)下標訪問。所以,不能將string直接賦值給char*
    2013-10-10
  • 詳解C語言實現(xiàn)空間索引四叉樹

    詳解C語言實現(xiàn)空間索引四叉樹

    本文主要介紹了用C語言實現(xiàn)四叉樹,對算法感興趣的同學,可以參考下,并且試驗一下。
    2021-05-05
  • C++實現(xiàn)假裝藍屏整蠱小程序

    C++實現(xiàn)假裝藍屏整蠱小程序

    因為工作的需要,有時候我們離開時并不想讓別人看到我們電腦的內容,所以本文為大家分享了一個基于C++實現(xiàn)的假裝藍屏的小程序,需要的可以參考下
    2023-06-06

最新評論