棧的定義及在括號匹配中的使用

2021-08-25 17:17:13 字數 1475 閱讀 3788

棧是資料結構中的乙個重要應用,今天做華為的筆試題想要就此積累一下

此題可以看成是括號匹配題的乙個改進。

首先棧的定義和基本函式的書寫為:

struct stack

;void initstack(stack &s)

char push(stack &s,char a)

s.top++;

s.strstack[s.top]=a;

return a;

}char pop(stack &s)

char a=s.strstack[s.top];

s.top--;

return a;

}int empty(stack &s,int re)

else

}

以上為棧的順序儲存的基本實現和操作

對於華為面試題的演算法思路可以為:

(則入棧,)則判斷上乙個是(還是其他字元,是(則有一對匹配的括號

碰到其他字元則將棧清空(即使top為-1),這樣的話才可以使入棧的都為(,(a)的情況不算在內

由此只有上乙個是(且top不為-1的情況才是合法的情況

上**:

#include "stdafx.h"

#include "iostream"

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

using namespace std;

#define stacksize 1024

struct stack ;

void initstack(stack &s)

char push(stack &s, char a)

}char pop(stack &s)

}int main()

;void initstack(stack &s)

char push(stack &s,char a)

s.top++;

s.strstack[s.top]=a;

return a;

}char pop(stack &s)

char a=s.strstack[s.top];

s.top--;

return a;

}int empty(stack &s,int re)

else

}int check(char *str)

{ stack s;

initstack(s);

int strn=strlen(str);

for(int i=0;i>str;

int re=check(str);

if(re==1)

{cout<

棧在括號匹配中的應用 C語言

基本思想 左括號進棧。右括號與棧頂元素匹配。棧在括號匹配中的應用 define crt secure no warnings include include include define maxsize 100 定義結構體 typedef struct sqstack sqstack s 定義全域性...

資料結構 棧在括號匹配中的應用

所謂括號校驗匹配其實質是對多種型別括號正確配對的校驗 包括 即 或者 為正確的表示式,如果出現交叉則匹配失敗,如 或 則為不正確格式。該程式也運用了棧的思想。若是左括號則入棧,若是右括號則看是否和當前棧頂元素是否匹配。若是則出棧,不是則當前表示式括號不匹配。程式思想 1.初始設定乙個空棧,順序讀入括...

python的棧實現及括號匹配問題

棧是一種先進後出 fifo 的資料結構,是一種特殊的列表,只能訪問棧頂元素。棧通常的操作 stack 建立乙個棧 isempty 判斷棧是否為空,是則返回true,否則返回false peek 返回棧頂元素 size 返回棧的大小 push 往棧中新增元素,也叫入棧 pop 刪除棧頂元素,也叫出棧用...