zoukankan      html  css  js  c++  java
  • 栈的应用--括号匹配

    #include <iostream>

    using namespace std;

    //定义链栈的存储结构
    typedef struct StackNode
    {
    char data;
    StackNode *next;
    }StackNode,*LinkStack;

    //初始化链栈
    void InitStack(LinkStack &S)
    {
    S = NULL;
    }

    //定义入栈操作
    bool Push(LinkStack &S,char e)
    {

    LinkStack p = new StackNode;
    if(p == NULL)
    return false;
    p->data = e;
    p->next = S;
    S = p;

    return true;
    }

    //定义出栈操作
    bool Pop(LinkStack &S,char &e)
    {
    LinkStack p;
    if(S == NULL)
    return false;
    e = S->data;
    p = S;
    S = S->next;
    delete p;
    return true;
    }

    //判断栈是否空
    bool StackEmpty(LinkStack &S)
    {
    if(S == NULL)
    return true;
    return false;
    }

    char getTop(LinkStack &S)
    {
    if(S)
    return S->data;
    return NULL;

    }

    //匹配检验函数
    bool Matching(LinkStack &S)
    {
    char x,c;
    int flag = 1;
    cin >> c;
    while (c != '#' && flag)
    {

    switch(c)
    {
    case '[':
    Push(S,c);
    break;
    case '(':
    Push(S,c);
    break;
    case ')':

    x = getTop(S);
    if(x == '(')
    Pop(S,x);
    else flag = 0;

    break;

    case ']' :

    x = getTop(S);
    if(x == '[')
    Pop(S,x);
    else flag = 0;
    break;


    }

    cin >> c;
    }

    if(StackEmpty(S) && flag)
    return true;
    else

    return false;

    }

    int main()
    {
    cout << "Please Input Your Expression__" << endl;

    LinkStack S;
    InitStack(S);

    if(Matching(S))
    cout <<"Matching Success!";
    else cout <<"Matching failed!";

    int i;
    cin >>i;
    return 0;
    }

  • 相关阅读:
    jackson、gson、fastjson
    jackson、gson、fastjson
    Java 常见面试题
    java8的新特性2
    关于mybatis的注释问题
    java PropertyDescriptor 应用及源码分析
    Java 反射总结
    java8的新特性1
    vo、po、dto、bo、pojo、entity、mode如何区分
    倒计时 不加锁 老代码
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/3998903.html
Copyright © 2011-2022 走看看