棧是資料結構中的乙個重要應用,今天做華為的筆試題想要就此積累一下
此題可以看成是括號匹配題的乙個改進。
首先棧的定義和基本函式的書寫為:
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 刪除棧頂元素,也叫出棧用...