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

简介: 数据结构实验之栈与队列四:括号匹配

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

SubmitStatistic

Problem Description

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

Input

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

Output

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

Sample Input

sin(20+10)

{[}]

Sample Output

yes

no

Hint

Source

ma6174

思路:

1:当出现(,{,【,直接存进数组

2:当),】,},出现时考虑和我们第一步存的数组是不是相对称

3:不对称直接break,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char a[100];
    char b[200];
    int i, len;
    while(gets(a))
    {
        len = strlen(a);
        int top = 0;
        memset(b,0,sizeof(b));
        for(i = 0; i < len; i++)
        {
            if(a[i] == '(' || a[i] == '{' || a[i] == '[')
            {
                top++;
                b[top] = a[i];
            }
            else if(a[i] == ')')
            {
                if(b[top] == '(')
                {
                    top--;
                }
                else
                {
                    break;
                }
            }
            else if(a[i] == ']')
            {
                if(b[top] == '[')
                {
                    top--;
                }
                else
                {
                    break;
                }
            }
            else if(a[i] == '}')
            {
                if(b[top] == '{')
                {
                    top--;
                }
                else
                {
                    break;
                }
            }
        }
        if(top == 0 && i == len)
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
    }
    return 0;
}


相关文章
|
2天前
|
存储
栈与队列练习题
栈与队列练习题
|
2天前
|
存储 索引
操作数栈的字节码指令执行分析
操作数栈的字节码指令执行分析
|
2天前
|
算法 C++
D1. Range Sorting (Easy Version)(单调栈+思维)
D1. Range Sorting (Easy Version)(单调栈+思维)
|
2天前
|
人工智能
线段树最大连续子段板子😂单调栈
线段树最大连续子段板子😂单调栈
|
2天前
数据结构第四课 -----线性表之队列
数据结构第四课 -----线性表之队列
|
2天前
数据结构第四课 -----线性表之栈
数据结构第四课 -----线性表之栈
|
3天前
|
存储
栈数据结构详解
栈(stack)是一种线性数据结构,栈中的元素只能先入后出(First In Last Out,简称FILO)。最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶 (top)。本文是对堆结构的通透介绍
|
6天前
|
存储 JavaScript 前端开发
什么是堆?什么是栈?他们之间从区别和联系
什么是堆?什么是栈?他们之间从区别和联系
22 0
|
3天前
|
存储 Java
数据结构奇妙旅程之栈和队列
数据结构奇妙旅程之栈和队列
|
4天前
|
算法
栈刷题记(二-用栈操作构建数组)
栈刷题记(二-用栈操作构建数组)