c語言這段括號匹配程式為什麼是錯的

時間 2021-06-26 19:15:52

1樓:

標頭檔案:(另存為seqstack.h)

typedef struct

seqstack;

void stackinitiate(seqstack *s) /*初始化順序堆疊s*/

int stacknotempty(seqstack s)

/*判順序堆疊s非空否,非空則返回1,否則返回0*/

int stackpush(seqstack *s, datatype x)

/*把資料元素值x壓入順序堆疊s,入棧成功則返回1,否則返回0 */

else

}int stackpop(seqstack *s, datatype *d)

/*彈出順序堆疊s的棧頂資料元素值到引數d ,出棧成功則返回1,否則返回0*/

else

}int stacktop(seqstack s, datatype *d)

/*取順序堆疊s的當前棧頂資料元素值到引數d ,成功則返回1,否則返回0*/

else

}括號問題

#include

#include

#include

#define maxstacksize 100

typedef char datatype;

#include "seqstack.h"

void expiscorrect(char exp, int n)

//判斷有n個字元的字串exp左右括號是否配對正確

else if(exp[i] == ']' && stacknotempty(mystack)

stackpop(&mystack, &c); //出棧

else if(exp[i] == ']' && stacknotempty(mystack)

else if(exp[i] == '}' && stacknotempty(mystack)

else if(((exp[i] == ')') || (exp[i] == ']') || (exp[i] == '}'))

&& !stacknotempty(mystack))

}if(stacknotempty(mystack))

printf("左括號多於右括號!\n");

else

printf("左右括號匹配正確!\n");

}void main(void)

"; //測試例子1。左右括號配對次序不正確

char b = "(()))abc"; //測試例子2。右括號多於左括號

char c = "(()()abc"; //測試例子3。左括號多於右括號

char d = "(())abc"; //測試例子4。左右括號匹配正確

int n1 = strlen(a);

int n2 = strlen(b);

int n3 = strlen(c);

int n4 = strlen(d);

expiscorrect(a, n1);

expiscorrect(b, n2);

expiscorrect(c, n3);

expiscorrect(d, n4);

}二者放於同一目錄下即可

2樓:

貼**啊, 截圖上來不好幫你試

C語言用棧編寫括號匹配

記住一座城 define stack size 160 棧空間大小 define flase 0 define true 1 typedef int bool 棧定義 typedef struct stack void initializing stack s 初始化棧為空 void destory...

c語言中char str括號裡為什麼是

這表示的是字元陣列,128是字元陣列長 不是字串長 char str 456 也是可以的。其中每個成員的值在 128 127之間,str 0 str 455 每個值不能超過127.如果超過,則擷取低位位元組存貯。題目裡是統計輸入字串中小寫英文字母個數,開頭用的就是這個。這個就好理解了。ascii 就...

幫忙把這段C語言程式加上註釋

struct student insert struct student head,struct student stu 此函式功能是 為一個由student物件組成的連結串列插入元素.引數head是連結串列頭,指向第一個連結串列元素.引數stu是要插入物件的指標.else 連結串列不為空,則插入 ...