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 爬虫保存的scv文件0kb
  • ¥20 如何实现基于强化学习的带电作业机械臂的运动规划与控制
  • ¥15 使用wpf制作打砖块游戏时遇到的一个Bug
  • ¥15 qrCodeDetector.detectAndDecode
  • ¥15 海洋可控源和大地电磁一维联合反演
  • ¥15 MFC多文档程序获取视图指针问题
  • ¥20 解体如何编写程序还有运行结果截图
  • ¥15 如何把matlabR2023遗传算法工具箱里面的各类选项对应的代码调出来呢?
  • ¥30 MDIGetActive() 获取活动view
  • ¥15 有数据,如何安装使用CLIP模型检索图片