博客
关于我
数据结构 括号匹配
阅读量:296 次
发布时间:2019-03-03

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

括号匹配,栈的应用

#include <stdio.h>#include <stdlib.h>#define true 1#define false 0#define ok 1#define error 0#define overflow -2#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int status;typedef struct {       char *base;    char *top;    int stacksize;}sqstack;status initstack(sqstack &s) {   //初始化stack;    s.base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));    if (!s.base) exit(overflow);    s.top = s.base;    s.stacksize = STACK_INIT_SIZE;    return ok;}status push(sqstack &s, char e) {       if (s.top - s.base >= s.stacksize) {           s.base = (char *)realloc(s.base, (s.stacksize + STACKINCREMENT) * sizeof(char));        s.top = s.base + s.stacksize;        s.stacksize += STACKINCREMENT;    }    *s.top++= e;    return ok;}status pop(sqstack &s,char &e) {       if (s.base == s.top) return error;    e = *--s.top;    return ok;}status stackempty(sqstack s) {       if (s.base == s.top) return true;    else return false;}status gettop(sqstack s, char &e) {       if (s.top == s.base) return error;    e = *(s.top - 1);    return ok;}void judge(){   	sqstack S;    initstack(S);	bool flag=true;    char op, a, b;    printf("请输入你要判断的这些括号(只能是“(、)、[、]”)\n");    op = getchar();    while (op != '\n'&& flag==true) {           switch (op) {           case '[':        case '(':push(S, op); break;        case ')':gettop(S, a); if (a == '(') pop(S,b);                 else flag = false; break;        case ']':gettop(S, a); if (a == '[') pop(S,b);                 else flag = false; break;        default: break;        }        op = getchar();    }    if (stackempty(S)) flag = true;    else flag = false;    if (flag) printf("匹配正确!");    else printf("匹配错误!");}int main() {       judge();    return 0;}

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

你可能感兴趣的文章
redis
查看>>
Hadoop_Scala操作Hbase
查看>>
STL教程:C++ STL快速入门(非常详细)
查看>>
【论文泛读03】卷积LSTM网络:一种短时降雨量预测的机器学习方法
查看>>
【学习笔记】欧拉函数,欧拉公式
查看>>
Python3序列
查看>>
React中设置404页面
查看>>
CSS总结div中的内容垂直居中的四种方法
查看>>
vue组件传参 props default 数组/对象的默认值应当由一个工厂函数返回
查看>>
修改dynamic web module的版本大小
查看>>
Node.js response 页面中文乱码
查看>>
视觉实战|使用人工神经网络进行图像分类
查看>>
3D感知技术及实践
查看>>
北大读博手记:怎样完成自己的博士生涯?非常具有指导性!
查看>>
基于OpenCV实战:对象跟踪
查看>>
属性闭包求解算法——数据库考试复习
查看>>
poj3617
查看>>
java学习笔记24:文档注释与代码块
查看>>
java学习笔记31:Arrays类介绍使用
查看>>
java学习笔记36:Integer的基本方法
查看>>