数据结构实验之栈四:括号匹配

来源:互联网 发布:python 3程序开发指南 编辑:程序博客网 时间:2024/04/30 20:51

题目描述

 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入

 输入数据有多组,处理到文件结束。

输出

 如果匹配就输出“yes”,不匹配输出“no”

示例输入

sin(20+10){[}]

示例输出

yesno
#include <stdio.h>#include <stdlib.h>#include<string.h>#include<malloc.h>#define STACK_INIT_SIZE 100    //存储空间初始分配量#define STACKINCREMENT 10//存储空间分配增量#define OK 1#define OVERFLOW -1#define ERROR  -2typedef int SElemType;struct stack{    SElemType base;//栈底指针    char a[51];    SElemType top; //栈顶指针    int stacksize;//当前已分配的存储空间,以元素为单位}SqStack;int match(char c1,char c2)//判定两括号是否匹配;{    if((c1=='('&&c2==')')||(c1=='{'&&c2=='}')||(c1=='['&&c2==']'))        return 1;    else        return 0;}
int  matching(char *str)//指针变量str括号是否匹配;{    int i;    char c;    SqStack.top=-1;//栈顶元素的初始化;    for(i=0;str[i]!=0;i++)    {        switch(str[i])        {        case '(':        case '{':         case '[':SqStack.top++;SqStack.a[SqStack.top]=str[i];break;//左括号则进栈;         case  ')':         case ']':         case'}':c=SqStack.a[SqStack.top];           if(match(c,str[i]))//看括号是否匹配            SqStack.top--;           else            return 0;        }    }    if(SqStack.top==-1)//是否全部匹配括号;        return -1;    else        return 0;}
int main(){   int i;   char str[51];//定义字符串;  while(gets(str))  {   i=matching(str);    if(i!=0)//括号是否匹配;        printf("yes\n");    else        printf("no\n");    }    return 0;}
0 0
原创粉丝点击