利用栈可以进行平衡符号的检测

该博客探讨了如何利用栈来检测输入的括号((){}[])是否平衡。文章指出,当遇到左括号时将其压入栈中,遇到右括号则尝试出栈匹配,若匹配失败则说明括号不平衡。除了基本思路,还提到需要处理额外的复杂情况,如错误的符号输入、特定的多字符符号如/* */等,这使得实现简洁的代码具有一定挑战。
摘要由CSDN通过智能技术生成

摘要:当我们输入(,),{,},[,],等符号时,经常要检查它们的正确性。
(1)利用栈可以完成这个问题,当遇到一个左括号(,{,[,入栈,遇到右符号,出栈,如果出栈的元素不满足匹配,则说明不平衡.
(2)尽管基本思路简单,但是考虑的如果要判断不平衡的原因(比如“(”多了),或者输入了一些错误的符号也要处理,以及像/* */等有两个字符的符号等细节问题,代码还是不容易写的太简洁.

// chap3_平衡符号的检验_stack.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "malloc.h"
#include "stdlib.h"
#define Empty -1
#define not_matched 0
#define matched 1
#define error -3
#define not_empty -4
typedef struct StackRecord *Stack;

struct StackRecord
{
    int Cpapcity;
    int TopStack;
    char *Array;

};
Stack CreateStack(int MaxElements)
{
    Stack S;
    S = (Stack)malloc(sizeof( StackRecord));
    S->Array = (char*)malloc(sizeof(char)*MaxElements);
    S->TopStack = -1;
    S->Cpapcity = MaxElements;
    return S;
}
void Push(Stack S,char X)
{
    if(S->TopStack >= S->Cpapcity-1)
    {
        puts("cannot push an elements into a full stack");
        return;
    }
    else
        S->Array[++S->TopStack] = X;
}
<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值