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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改