C語言括號匹配【堆疊原理】
利用堆疊原理,實現括號匹配,練手程式,沒什麼實際意義,僅供參考。
#include<stdio.h> #include<string.h> void main() { int i,len,top=-1; char stack[200],brace[100]; fgets(brace,100,stdin); len = strlen(brace)-1; //end char is '\0' // [ ] ( ) { } // 91 93 40 41 123 125 // input & output for(i=0;i<len;i++) { if(brace[i]==(char)40||brace[i]==(char)123||brace[i]==(char)91) { top++; stack[top]=brace[i]; printf("input %c\n",brace[i]); } else if(brace[i]==(char)41 && stack[top]==(char)40) { printf("output )\n"); top--; } else if(brace[i]==(char)93 && stack[top]==(char)91) { printf("output ]\n"); top--; } else if(brace[i]==(char)125 && stack[top]==(char)123) { printf("output }\n"); top--; } } if(top==-1) { printf("\ntop = %d ;output success!\n",top); } }
[email protected]:~/learning/sample code/algrithm/parenthesis_matching$ ./match.o
(1+3*[4/6])+{4*[5+6]}
input (
input [
output ]
output )
input {
input [
output ]
output }
top = -1 ;output success!
相關推薦
C語言括號匹配【堆疊原理】
利用堆疊原理,實現括號匹配,練手程式,沒什麼實際意義,僅供參考。 #include<stdio.h> #include<string.h> void main() { int i,len,top=-1; char stack[200],brace
C語言 - 氣泡排序【演算法優化】
氣泡排序很好理解,但是如何能夠讓其更加有效的執行是需要我們一直思考的問題。 本文會使用C語言(部分C++語法)介紹氣泡排序演算法並結合實際情況對齊進行優化,增強其健壯性。 **********************************************************
從零開始教你用C語言編遊戲【如鵬】
純真童趣的《泡泡堂》,還有武林情仇,笑傲江湖的《劍俠情緣on line》。它是e時代常談的話題,是互動式娛樂的主力軍,是一種高層次的綜合藝術,更是一個民族的文化,世界觀的全新傳播方式 。作為遊戲玩家的我們,是不是想設計一個屬於自己的遊戲呢? 愛玩是人的天性,而C語言是我們計算機專業都要學習的一門基礎 學科。
資料結構(C語言)---括號匹配
#include <stdio.h> #include <stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 //分配不同空間只需要更改此處的值,不需動程式裡面的值。
C語言 括號匹配問題
定義一個計數器用來判斷正反括號的數量,遇見 { 則count+1,當遇見count不為0且當前字元為 } 時,count-- 若count=0且當前字元為 } 時括號一定不匹配,迴圈直到EOF,判
【編譯原理】利用Flex工具生成C語言詞法分析器
Flex構造C語言詞法分析器 可以識別大部分的C語言關鍵字和識別符號,可以去除註釋(多行單行都可以),可以識別整數和浮點數,可以識別錯誤的浮點數。 lex檔案結構: [第一部分:定義段] /* *按照C語言語法,宣告檔案包含,巨集定義,常數定義,全域性
【編譯原理】類C語言詞法分析器的設計
1.實驗要求輸入為一個以類C語言編寫的源程式輸出為一組二元組序列構成的文字檔案,一行為一個二元組,二元組中間以逗號隔開實驗報告上要求附上DFA 2.語言說明:保留字:unsigned、break、return、void、case、float、char、for、while、co
【C語言天天練(二)】statickeyword
修飾 weight () main函數 class code keyword spa tail 引言: statickeyword不僅能夠修飾變量。並且能夠修飾函數。了解它的使用方法,不僅對閱讀別人的代碼有幫助,也有助於自己寫出更加健壯的
【C語言天天練(三)】typedef具體解釋
tar 原因 外部 指向 可用 引入 解釋 trac 兩個 引言: typedef能夠看作type define的縮寫,顧名思義就是類型定義,也就是說它僅僅是給已有的類型又一次定義了一個方便使用的別名。並沒有產生新的數據類型。 typed
洛谷 P1739 表達式括號匹配【STL/stack/模擬】
stack clu b+ ack 編寫一個程序 輸入輸出格式 turn 是否 algorithm 題目描述 假設一個表達式有英文字母(小寫)、運算符(+,—,*,/)和左右小(圓)括號構成,以“@”作為表達式的結束符。請編寫一個程序檢查表達式中的左右圓括號是否匹配,若匹配,
【編譯原理】c++實現自下而上語法分析器
不可 acm times style size PC -i 表達式 鏈接 寫在前面:本博客為本人原創,嚴禁任何形式的轉載!本博客只允許放在博客園(.cnblogs.com),如果您在其他網站看到這篇博文,請通過下面這個唯一的合法鏈接轉到原文! 本博客全網唯一合法URL:ht
C語言模擬實現【strncpy】 【strncat】 【strncmp】
模擬實現【strncpy】 char *my_strncpy(char* dest,char *src,size_t count) { char *ret = dest; assert(dest); assert(src); while(count)
c語言指標學習【轉】
前言 近期俄羅斯的隕石、四月的血月、五月北京的飛雪以及天朝各種血腥和混亂,給人一種不詳的預感。佛祖說的末法時期,五濁惡世 ,十惡之世,人再無心法約束,道德淪喪,和現在正好吻合。尤其是在天朝,空氣,水,食品,你能告訴還有沒有問題的嗎?不知大難至,世人依舊忙。禍福相依,危中有機。那些高階生命,
“棧”的典型應用—表示式求值(C語言實現)【轉】
我們都知道算術四則運算的運算規則是: 先乘除,後加減。 從左到右計算 先算括號內,再算括號外 表示式組成 任何一個表示式都有運算元、運算子和界定符組成。 運算元即可以是常量,也可以是被說明為變數或常量的識別符號。 運算子可以分為算術運算,關係運算和邏輯運
【C語言從入門到懵逼】#1 簡單入門
簡單說明 本文針對接觸過C語言的選手(瞭解hello world程式怎麼寫) 如果有任何意見或建議歡迎在部落格最下面評論,作者會及時反饋並進行更新 文章作者保留權利,如需要任何形式的使用請聯絡作者:
【C語言 翁愷·第8周】
單詞長度(4分) 題目內容: 你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以‘.’結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如“it’s”算一個單詞,長度為4。注意,行中可能出現連續的空格。 輸入格式: 輸入在一行中給出一行文字,以
【C語言 翁愷·第7周】
1多項式加法(5分) 題目內容: 一個多項式可以表達為x的各次冪與係數乘積的和,比如: 2x6+3x5+12x3+6x+20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。 程式要處理的冪最大為100。 輸入格式: 總
【C語言 翁愷·第5周】
1素數和(5分) 題目內容: 我們認為2是第一個素數,3是第二個素數,5是第三個素數,依次類推。 現在,給定兩個整數n和m,0<n<=m<=200,你的程式要計算第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。 輸入格式: 兩個整數,第
【C語言 翁愷·第4周】
1奇偶個數(5分) 題目內容: 你的程式要讀入一系列正整數資料,輸入-1表示輸入結束,-1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。 輸入格式: 一系列正整數,整數的範圍是(0,100000)。如果輸入-1則表示輸入結束。 輸出格式: 兩個整數,第一個整
【C語言 翁愷·第3周】
1時間換算(5分) 題目內容: UTC是世界協調時,BJT是北京時間,UTC時間相當於BJT減去8。現在,你的程式要讀入一個整數,表示BJT的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小於10,則沒有千位部分;如果小時是0,則沒有百位部分;如果小時不是0而分小於10分,