注册 登录
编程论坛 数据结构与算法

括号匹配问题 求思路,求代码注释。

tremere 发布于 2014-05-05 08:24, 477 次点击
#include<stdio.h>
#include<stdlib.h>
#define STSIZE 100
typedef struct stack{
    char *data;
    int top;
}STack;

void inistack(STack &s)
{
    s.data = (char *)malloc(STSIZE * sizeof(char));
    s.top = 0;
}

int push(STack &s, char x)
{
    if (s.top < STSIZE )
    {
        s.data[s.top++] = x;
        return 1;
    }
    return 0;
}

char pop(STack &s)
{
    if (s.top)
        return s.data[--s.top];
    return '#';
}

char gettop(STack s)
{
    if(s.top)
        return s.data[s.top-1];
    return '#';
}

int is_right(STack &st, char *exp)
{
    int i=0;
    char ch;
    while (exp[i] != '\0')
    {
        switch (exp[i]){
            case '(': push(st, exp[i]); break;
            case '[': push(st, exp[i]); break;
            case '{': push(st, exp[i]); break;
            case ')': ch = pop(st); if (ch != '(') return 0; break;
            case ']': ch = pop(st); if (ch != '[') return 0; break;
            case '}': ch = pop(st); if (ch != '{') return 0; break;
        }
        i++;
    }
    if (st.top) return 0;
    return 1;
}
main()
{
    char exp[100], ch;
    int i=0;
    STack st;
    inistack(st);
    gets(exp);
    if (is_right(st, exp))
        printf("括号匹配正确!\n");
    else
        printf("括号错误!\n");
   
   
}
初学数据结构,很多东西不懂,希望得到诸位帮助,告诉 我思路和这些代码的详细注释。
1 回复
#2
azzbcc2014-05-05 23:37
哪里不懂?

你直接贴代码,我根本不知道改怎么帮你
1