Titan笔记

  • 首页
  • Java
  • 数据结构
  • C语言
  • Web
  • 杂谈
  • 移动开发
  • 逸笔挥墨
Titan笔记
分享学习,研究与开发的点滴记忆
  1. 首页
  2. 数据结构
  3. 正文

[数据结构] 括号符的匹配

2020年3月21日 764点热度 3人点赞 0条评论

  • 采用链式存储实现栈的初始化、入栈、出栈操作。
  • 给定一个括号序列,里面包括圆括号和方括号,编程检验该括号序列中括号是否配对

#include<stdio.h>
#include<stdlib.h>
// Code by Titan 2020-03-16
// 定义堆栈结构
typedef struct Node *Position;
typedef Position Stack;
struct Node {
  char ch;
  Position next;
};
//定义初始化堆栈的操作
Stack initS() {
  Stack S =(Stack)malloc(sizeof(struct Node));
  S->next=NULL;
  return S;
}
// 判断堆栈是否为空
int isEmpty(Stack S) {
  if(S->next==NULL) {
    return 1;
  } else {
    return 0;
  }
}
// 定义压入堆栈的操作
void Push(char data,Stack S) {
  Stack Temp = (Stack)malloc(sizeof(struct Node));
  Temp->ch=data;
  Temp->next = S->next;
  S->next=Temp;
}

//定义删除栈顶节点并返回的操作
char Pop(Stack S) {
  if(isEmpty(S)) {
    return NULL;
  } else {
    Stack Temp=S->next;
    char ch = Temp->ch;
    S->next=Temp->next;
    free(Temp);
    return ch;
  }
}

int main() {
  char temp,get;
  int flag=1; // 判断括号符是否匹配的标志
  Stack S = initS(); // 初始化一个堆栈
  // 下面是判断流程
  while(scanf("%c",&temp),temp!='\n') {
    if(temp!=']' && temp !=')') {
      Push(temp,S);
    } else if(temp == ')' ) {
      get = Pop(S);
      if(get !='(') {
        flag=0;
        break;
      }
    } else if(temp == ']' ) {
      get = Pop(S);
      if(get !='[') {
        flag=0;
        break;
      }
    }
  }
  // 只有当堆栈空以及Flag为1时,才能判断括号符匹配 
  if(flag && isEmpty(S)){
    printf("括号符匹配!\n");
  }else{
    printf("括号符不匹配!\n");
  }
  
}

 

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 数据结构
最后更新:2020年3月21日

Titan

不为岁月流逝蹉跎,不为潮流的势头去附和

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论
最新 热点 随机
最新 热点 随机
Docker配置IPv6容器网络支持 什么是Elastic Stack,ELK的发展历程 K8s中Pod的基本概念 Pushkin AI - 基于OpenAI-ChatGPT / GPT3的问答机器人 云原生 - 浅谈容器基础与K8S架构设计 腾讯Serverless体验,使用TypeScript编写并部署云函数
Docker配置IPv6容器网络支持
SpringBoot整合JWT认证机制实现接口鉴权 Spring Cloud 微服务学习笔记 - Eureka 服务注册与发现 [PHP框架] ThinkPHP6 介绍、安装及配置 Jetbrains(IDEA)免费教育订阅申请指南 [数据结构] 括号符的匹配 Java获取文件MD5的方式
分类
  • Android
  • C语言
  • Elasticsearch
  • Hadoop
  • Hive
  • Java
  • JavaWeb
  • Kubernetes
  • Linux运维之道
  • Mybatis学习笔记
  • Python
  • SpringCloud
  • Web
  • Web前端
  • Web后端
  • 云原生
  • 并发编程
  • 开发工具
  • 数据库
  • 数据结构
  • 杂谈
  • 移动开发
  • 移动测试
  • 诗词歌赋
  • 软件测试
  • 逸笔挥墨
  • 随摘
标签聚合
二叉树 Mybatis学习笔记 数据结构 Python JavaWeb Java Apache-Hive 链式存储

COPYRIGHT © 2013-2021 Titan. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备20001822号-1

豫公网安备 41010502004418号