資料結構 堆疊應用 括號匹配性 另一種方法

2021-09-12 08:34:26 字數 1948 閱讀 3909

之前的那個:

/*

([)]]()

()*/

/*要求:

只考慮小括號和中括號

演算法設計:

通過結構體定義乙個棧seqstack和乙個char型別的陣列,用來儲存字串

輸入一行字串,逐一判斷其中的括號

如果是左括號,則直接進棧。如果是有括號「)」或「]」,則檢查棧頂元素是否為相應的左括號,

如果是則出棧,如果不是,則說明括號不匹配。如果一直帶處理完所有的字元都沒有發現不匹配

的括號,則說明匹配成功。

*/#include#includetypedef unsigned char boolean;

#define true 1

#define false 0

typedef char datatype;

#define maxsize 100

typedef structseqstack;

boolean initstack(seqstack **s);

void destroystack(seqstack **s);

boolean push(seqstack *s, datatype x);

boolean isstackfull(seqstack s);

boolean isstackempty(seqstack *stack);

boolean gettop(seqstack *stack, datatype *x);

boolean pop(seqstack *stack, datatype *x);

boolean isbrackermatched(seqstack *s, char *str, int *index);

void showwrongmatch(char *str, int mismatchindex);

void showwrongmatch(char *str, int mismatchindex)

printf("^\n");

}boolean isbrackermatched(seqstack *s, char *str, int *index)else if(str[i] == ')')else

}else if(str[i] == ']')else

} printf("**\n"); }

printf("括號匹配!\n");

return true;

}boolean pop(seqstack *stack, datatype *x)

*x = stack->data[stack->top--];

return true;

} boolean gettop(seqstack *stack, datatype *x)

*x = stack->data[stack->top];

return true;

} boolean isstackempty(seqstack *stack)

boolean isstackfull(seqstack s)

boolean push(seqstack *s, datatype x)

s->data[++s->top] = x;

return true;

}void destroystack(seqstack **s)

boolean initstack(seqstack **s)

*s = (seqstack *)malloc(sizeof(seqstack));

(*s)->data = (datatype *)malloc(sizeof(datatype) * maxsize);

(*s)->maxsize = maxsize;

(*s)->top = -1;

return false;

}void main(void)

資料結構習題 括號匹配(堆疊)

檢查一段c語言 的小括號 中括號 和大括號是否匹配。在一行中輸入一段c語言 長度不超過1000個字元 行末以換行符結束 第一行輸出左括號的數量和右括號的數量,中間以乙個空格間隔。若括號是匹配的,在第二行列印yes,否則列印no。for int i 0 iadj i j 8 8 yesfor int ...

基礎資料結構 堆疊 拓展 括號匹配

這是乙個考察對堆疊概念理解的應用,輸入一串帶括號的式子,檢查其中的括號是否前後對應。思路是當遇到括號是入棧,並在下次遇到括號時檢測是否與上乙個入棧的括號匹配為一對,不是則繼續入棧。因為正確的式子最終總能遇到乙個匹配的括號。例如 可以最先檢測出 這一對小括號,然後出棧,下乙個待匹配括號 與 也可成功匹...

資料結構 括號匹配

三種括號形式 輸入一段字串,判斷其括號是否匹配。如下 括號匹配問題 include include include define stack init size 100 define stackincrement 10 define error 0 define true 1 define fals...