括号匹配编码c语言,用c语言实现括号匹配算法
/*括號匹配算法*/
#include
#define FALSE 0
#define TRUE 1
#define MAXSIZE 100
typedef char DataType;
//定義棧
typedef struct stack{
DataType data[MAXSIZE];
int top;
}SeqStack;
//初始化棧
void InitStack(SeqStack *s)
{
s->top = -1;
}
//判斷棧是否為空
int IsEmpty(SeqStack *s)
{
if(s->top == -1)
return TRUE;
return FALSE;
}
//判斷棧是否已滿
int IsFull(SeqStack *s)
{
if(s->top == MAXSIZE-1)
return TRUE;
return FALSE;
}
//出棧
void PopStack(SeqStack *s, DataType temp)
{
if(IsEmpty(s))
return;
temp = s->data[s->top];
s->top --;
}
//壓棧
void PushStack(SeqStack *s,DataType temp)
{
if(IsFull(s))
return;
s->top ++ ;
s->data[s->top]=temp;
}
//判斷兩個括號是否匹配
int Match(char chone,char chtwo)
{
if(chone=='(' && chtwo==')')
return TRUE;
else if(chone == '{' && chtwo == '}')
return TRUE;
else if(chone == '[' && chtwo == ']')
return TRUE;
else
return FALSE;
}
//取棧頂元素
void GetTopStack(SeqStack *s , DataType *temp)
{
if(IsEmpty(s))
return;
*temp = s->data[s->top];
}
void BracketMatch(char *str)
{
SeqStack s;
int i;
char ch;
InitStack(&s);
for(i=0 ; str[i]!='\0';i++ )
{
switch(str[i]){
case '(':
case '[':
case '{':
PushStack(&s,str[i]);
break;
case ')':
case ']':
case '}':
if(IsEmpty(&s))
{
printf("右括號多余\n");
return;
}else{
GetTopStack(&s,&ch);
if(Match(ch,str[i]))
PopStack(&s,ch);
else{
printf("\n對應的右括號不同類\n");
return;
}/*if*/
}/*else*/
}/*for*/
}/*switch*/
if(IsEmpty(&s))
printf("\n括號匹配\n");
else
printf("\n左括號多余\n");
}
int main()
{
char str[MAXSIZE];
int i;
printf("Input the bracket string: \n");
scanf("%s",str);
BracketMatch(str);
return 1;
}
總結
以上是生活随笔為你收集整理的括号匹配编码c语言,用c语言实现括号匹配算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言编程平均分,用C语言编程平均分数
- 下一篇: js除法与C语言除法,JS算术运算符及用