設計乙個判別表示式中左、右括號是否配對出現的演算法,採用()資料結構最佳
1樓:網友
設計乙個判別表示式中左、右括號是否配對出現的演算法,採用棧資料結構最佳。
原因: 棧是一種具有記憶能力的線性表,存取規則是先進後出,判別時遇到乙個左括號時就向棧插入左括號,遇到右括號就從棧中刪除乙個左括號,最後若棧中沒有左括號就證明括號成對,所以採用棧最適合判斷表示式中括號是否成對出現。
2樓:網友
就是棧。配對,就是乙個左括號,乙個右括號。你從頭掃瞄字串,看見左括號就進棧,看見右括號就把裡面的最外乙個左括號出棧,這樣就是一對。
等掃瞄完的時候,看棧裡面好有沒有。如果沒有,那就是配對的,要不就是不配對。
設計乙個判別表示式中左、右括號是否配對出現的演算法,採用什麼資料結構最佳。
3樓:網友
使用「棧」 這種資料結構。
棧 (stack)是一種後進先出(last in first off,lifo)的資料結構。
演算法基本思想:依次判斷表示式中的每個字元,若是左括號就入棧,如果是右括號則出棧,出棧的時候判斷是否為空,如果為空,則說明不匹對,最後讀到表示式末尾沒有字元了,再判斷一下棧是否為空,如果為空,則說明匹配,不為空,說明不匹配。
#include
#include //malloc,realloc#include //含有overflow#include //exit()
#define s_size 100 //棧的空間大小。
#define stackincreament 10//增加空間。
struct sqstack;
void main()
的括號表示式:");
gets(ch);
while(*p)
case ']
case ')pop(s,e);
if ((e=='e=='p=='e=='p=='
p++;else
break;
default :p++;其他字元就後移。
if (stackempty(s))
printf("括號匹配成功");
elseprintf("缺少右括號!")
printf("");
void initstack(sqstack &s)int stackempty(sqstack s)void push(sqstack &s,int e)*(
void pop(sqstack &s,int &e)
4樓:匿名使用者
很明顯,用棧。
如果是左括號,入棧。
如果是右括號,看棧頂是不是左括號,如果是就把那個左括號出棧;否則不配對(可以直接結束演算法)
處理完所有符號後,棧為空則配對成功,否則不配對。
求下列括號匹配的檢驗的演算法 【(【】【】)】
5樓:匿名使用者
例如 1{2[3(4+4)(4+4)3]2} {大括號}[中括號](小括號)
1{2[3x8x8x3]2}
1x2304
先算最中心的括號 不管是加 減 乘 除 在沒有括號的情況下 先算乘除 再算加減 有括號的情況下 先算加減 再算乘除!
怎樣試男人是否在乎自己,怎樣試乙個男人是否在乎自己
男人就這樣.你們都是在互相猜疑.雙方都需要坦誠.我暈,什麼叫男人就是這樣 有什麼了不起 大不了重新找 既然提客知道如何對付他 你可以就這樣了 因為這個辦法確實不錯 我個人決的不該想著去考研他,感情是雙方的是真摯的,要是都彼此有猜疑就不好了是吧.本來沒誤會的都誤會了事情會更糟糕的.在他的朋友面前經常提...
怎樣判別乙個男孩子是不是渣男
日常生活中,該如何辨別乙個男人是不是渣男呢!看這五點就知道了,一般情況下,渣男在平時的生活中,一般都會有這五種行為,也是渣男最代表性的五種行為,女人一旦遇見,一定要趁早遠離,別因為你的不甘從而越陷越深。1 整天就知道看別人不順眼。總覺得自己很厲害的樣子,總覺得全世界就自己最牛,總覺得全世界都應該圍繞...
怎樣才可以做乙個汽車試駕,怎麼才能做汽車試駕員
到每個4s店假裝要買車 然後試駕完就找藉口走人 但是4s的試駕線路都很短 如果你對車比較了解懂行能說會倒 就應聘有關汽車測評試駕解說的公司上班 申請做試駕員 比如汽車之家 易車網 電視節目的汽車欄目組。哦 首先是交規 然後熟悉汽車 掌握開車要領 練習開車 不要緊張。汽車試駕是怎麼個流程 1 參加乙個...