括号匹配问题

作者在 2011-06-15 13:12:29 发布以下内容
标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
typedef char type;
typedef struct
{
    type data[SIZE];
    int top;
    int base;
}stacktype;
stacktype *InitStack()
{
    stacktype *p;
    p=(stacktype *)malloc(sizeof(stacktype));
    if(!p)
        return NULL;
    else
        {
            p->top=1;
            p->base=0;
            return p;
        }
}
stacktype * push(stacktype *p,type x)
{
    if(p->top-p->base<SIZE )
 {
     p->data[p->top]=x;
  p->top++;
 }
 return p;
}
type GetTop(stacktype *p)
{
    type top;
 if(p->top-p->base>=1 )
 {
       top=p->data[p->top-1];
 }
    return top;
}
int StackEmpty(stacktype *p)
{
 if(p->top-p->base==1)
 {
        return 1;
 }
 else
 {
  return 0;
 }
}
void Pop(stacktype *p)
{
 if(p->top-p->base>1)
 {
        p->top--;
 }
}
int match(type e,type x)
{
    if((e=='('&&x==')')||(e=='['&&x==']')||(e=='{'&&x=='}'))
    return 1;
    else
    return 0;
}
int main()
{
    type x,e;
    stacktype *p;
    p=InitStack();
    x=getchar();
    while(x!='#')
    {
        if(StackEmpty(p))
            push(p,x);
        else
        {
          e=GetTop(p);
          if(match(e,x))
            {
    Pop(p);
            }
          else
            push(p,x);
        }
        x=getchar();
    }
    if(StackEmpty(p))
    printf("匹配");
    else
    printf("不匹配");
    return 0;
}
标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

标题: 括号匹配问题
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。
输入: 括号序列#(#为括号输入结束符号)
输出: 匹配或不匹配
输入样例:

{[()]}#

[{{}[(])}]#

输出样例:

匹配

不匹配

数据结构(c语言) | 阅读 1135 次
文章评论,共0条
游客请输入验证码
浏览69259次