Shinone+const 2022-11-12 13:00 采纳率: 92%
浏览 10
已结题

有效括号,为什么在力扣上不对,在codeblocks上可以

第一个测试点“()”我的力扣老是不对,我在codeblocks上测试了下,觉得没问题呀,不过因为是在codeblocks上和力扣不一样,所以我增加了main函数
力扣上:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define true 1
#define false 0
typedef int E;
struct Stack{
    char val;
    struct Stack* next;
    char top;
};
typedef struct Stack* ListStack;
_Bool initStack(ListStack stack){
    stack = (struct Stack*)malloc(sizeof(struct Stack));
    if(stack==NULL) return false;
    stack->next = NULL;
    return true;
}
_Bool push(ListStack stack, char element){
    ListStack tmp = stack->next,new;
    new = (struct Stack*)malloc(sizeof(struct Stack));
    if(new == NULL) return false;
    new->val = element;
    new->next = tmp;
    stack->next = new;
    stack->top = element;
    return true;
}
char pop(ListStack stack){
    ListStack tmp = stack->next;
    stack->next = stack->next->next;
    char result = tmp->val;
    free(tmp);
    return result;
}
int isEmpty(ListStack stack){
    if(stack->next==NULL) return 1;
    else return 0;
}
_Bool isValid(char * s){
    unsigned long len = strlen(s);
    struct Stack stack;
    initStack(&stack);

    int i;
    if(len%2==1) return false;

    for(i=0;i<len;i++){
        if(s[i]=='{' || s[i]=='[' || s[i]=='('){
            push(&stack,s[i]);
        }else{
            if(isEmpty(&stack)) return false;
            if(s[i]=='}'){
                if(pop(&stack)!='{') return false;
            }else if(s[i]==']'){
                if(pop(&stack)!='[')  return false;
            }else{
                if(pop(&stack)!='(') return false;
            }
        }



    }
    if(isEmpty(&stack)) return true;
    else return false;
}

img

codeblocks上:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define true 1
#define false 0
typedef int E;
struct Stack{
    char val;
    struct Stack* next;
    char top;
};
typedef struct Stack* ListStack;
_Bool initStack(ListStack stack){
    stack = (struct Stack*)malloc(sizeof(struct Stack));
    if(stack==NULL) return false;
    stack->next = NULL;
    return true;
}
_Bool push(ListStack stack, char element){
    ListStack tmp = stack->next,new;
    new = (struct Stack*)malloc(sizeof(struct Stack));
    if(new == NULL) return false;
    new->val = element;
    new->next = tmp;
    stack->next = new;
    stack->top = element;
    return true;
}
char pop(ListStack stack){
    ListStack tmp = stack->next;
    stack->next = stack->next->next;
    char result = tmp->val;
    free(tmp);
    return result;
}
int isEmpty(ListStack stack){
    if(stack->next==NULL) return 1;
    else return 0;
}
_Bool isValid(char * s){
    unsigned long len = strlen(s);
    struct Stack stack;
    initStack(&stack);

    int i;
    if(len%2==1) return false;

    for(i=0;i<len;i++){
        if(s[i]=='{' || s[i]=='[' || s[i]=='('){
            push(&stack,s[i]);
        }else{
            if(isEmpty(&stack)) return false;
            if(s[i]=='}'){
                if(pop(&stack)!='{') return false;
            }else if(s[i]==']'){
                if(pop(&stack)!='[')  return false;
            }else{
                if(pop(&stack)!='(') return false;
            }
        }



    }
    if(isEmpty(&stack)) return true;
    else return false;
}
int main(){
    char s[10] = "()";
    if(isValid(s)) printf("true");
    else printf("false");

}


显示为"true"

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-12 14:08
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 修改了问题 11月12日
  • 创建了问题 11月12日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么