作者在 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>
#include <stdlib.h>
#define SIZE 100
typedef char type;
typedef struct
{
type data[SIZE];
int top;
int base;
}stacktype;
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++;
{
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;
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;
}
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 |
描述: | 用顺序存储实现栈的初始化、入栈、出栈、取栈顶、判栈空操作。调用以上操作实现判断从键盘输入的括号序列是否匹配。 |
输入: | 括号序列#(#为括号输入结束符号) |
输出: | 匹配或不匹配 |
输入样例: |
{[()]}# [{{}[(])}]# |
输出样例: |
匹配 不匹配 |