博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构】括号匹配
阅读量:2026 次
发布时间:2019-04-28

本文共 1274 字,大约阅读时间需要 4 分钟。

#include "stdafx.h"

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef char SElemType;

typedef struct{

    SElemType *base;

    SElemType *top;

    intstacklen;

}SqStack;

 

//建立空栈

int InitStack(SqStack &S,char*str){

    S.stacklen=strlen(str);

    S.base=(SElemType*)malloc(S.stacklen * sizeof(SElemType));

    if(!S.base)exit(OVERFLOW);

    S.top=S.base;

    returnOK;

}

 

 

//括号匹配检测

int Check(SqStack &S1,SqStack &S2)

{

    char*p;

    for(S2.top=S2.base;S2.top<S2.base+S2.stacklen;S2.top++)

    {

{
if(S1.top==S1.base)p=S1.top;

    elsep=S1.top-1;}

    {

if(*(S2.top)=='('||*(S2.top)=='{'||*(S2.top)=='['){*(S1.top)=*(S2.top);S1.top++;}

    elseif(*(S2.top)==')'||*(S2.top)=='}'||*(S2.top)==']')

    {

if((*(S2.top)==')'&&*p=='(')||(*(S2.top)=='}'&&*p=='{')||(*(S2.top)==']'&&*p=='[')){S1.top--;}

    else{printf("匹配的结果为:\n匹配失败!\n");return OK;}}}

    }

    if(S1.top==S1.base)

       printf("匹配的结果为:\n匹配成功!\n");

    returnOK;

}

 

 

//主函数

int main()

{

    SqStack S1,S2;

    chara[100];

    printf("请输入要匹配的括号:\n");

    gets(a);

    InitStack(S2,a);

    InitStack(S1,a);

    strcpy(S2.base,a);

    printf("要进行匹配的括号为:\n");

    puts(S2.base);

    printf("请按“”开始进行匹配:\n");

    intselect;

    scanf("%d",&select);

    switch(select)

    {

    case1:

       Check(S1,S2);break;

    default:printf("您输入的数据有误!\n");

    }

    returnOK;

}

转载地址:http://usdaf.baihongyu.com/

你可能感兴趣的文章
批处理-摘自百度百科
查看>>
DataGrip介绍及其快捷键的总结
查看>>
Spring中WebApplicationInitializer的理解
查看>>
[Java] I/O底层原理之一:字符流、字节流及其源码分析
查看>>
github提交PR(pull request)过程和问题
查看>>
java的初始化顺序
查看>>
纯手写lombok插件(试玩版)
查看>>
java类中serialVersionUID的作用
查看>>
Java serialVersionUID 有什么作用?
查看>>
Java中的关键字 transient
查看>>
transient在java中的作用
查看>>
Java 利用枚举实现单例模式
查看>>
Java—Object对象和Collection对象的toString()方法
查看>>
Java数组的三种打印方式
查看>>
Lists.newArrayList
查看>>
Arrays.asList和Lists.newList使用时的陷阱
查看>>
Java集合和数组的区别
查看>>
快速理解java泛型用法
查看>>
部分版本Oracle多层嵌套查询不识别列名的BUG
查看>>
Java泛型的学习和使用
查看>>