解题思路:
注意事项:
参考代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct s{
int top;
char data[1000];
}STACK;
void clear(STACK *stack){ //栈的初始化
stack->top=-1;
}
void pop(STACK *stack){ //弹栈
stack->top--;
}
void push(STACK *stack,char a){ //压栈
stack->top++;
stack->data[stack->top]=a;
}
int compare(char c){ //比较括号,将类型相同左右括号赋同一个值,以便于下面比较
if (c==')'||c=='('){
return 1;
}else if (c==']'||c=='['){
return 2;
}else{
return 3;
}
}
int main (){
char c[1000];
scanf ("%s",c);
STACK *stack;
stack=(STACK *)malloc(sizeof (STACK)); //指针分配一个空间
clear(stack);
for (int i=0;c[i]!='\0';i++){
if (c[i]=='('||c[i]=='['||c[i]=='{'){ //左括号都压栈
push(stack,c[i]);
}else if (c[i]==')'||c[i]==']'||c[i]=='}'){ //右括号与栈顶括号比较,是同一类型可以匹配,弹出栈顶括号,否则直接不匹配
if (compare(stack->data[stack->top])==compare(c[i])){
pop(stack);
}else{
printf ("Wrong");
return 0;
}
}
}
if (stack->top==-1){ //最后栈空,则全部匹配上了
printf ("OK");
}else{
printf ("Wrong");
}
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题10.1 (Java代码)浏览:1492 |
回文串 (C语言代码)浏览:3095 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
Tom数 (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:487 |
小O的图案 (C语言代码)浏览:979 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1359 |
母牛的故事 (C语言代码)浏览:495 |
C语言程序设计教程(第三版)课后习题7.5 (C++代码)浏览:1460 |
拯救雅典娜浏览:1380 |