写栈的题目 leetcode 有效的括号

本文介绍了使用栈解决括号匹配问题的方法,强调了解题思路的重要性。文章提供了C语言实现顺序栈的代码,包括初始化、获取长度、清空栈、判断栈空、入栈、出栈和获取栈顶元素等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

写了一个括号匹配的问题,典型的栈。

但是这道题目不只是用到了栈,一开始的巧妙的配对就已经够厉害了,下面用到的栈的知识和代码我反而觉得好想。有时候是这样的,你的切入方式决定了这道题目对于你来说的难度。

如果用python就有直接的函数用压栈、出站,但是c要你自己写的。

emmm,但是我写的也不好。 


终于能把这篇文章发出来了,以下是栈的一些实现。

//所以还是要写写栈了
#include<stdio.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
typedef int ElemType;
typedef int State;
typedef struct
{
    ElemType data[MAXSIZE];
    int top;
}SqStack;
//顺序栈的存储结构,最大值MAXSIZE为栈满的条件
//top为栈顶指针


//初始化顺序栈
State initStack(SqStack *S)
{
    S->top = -1;    //将栈顶指针设为-1,即将栈作为还是空着的时候
    return OK;
}

//获得顺序栈的长度
int getLength(SqStake *S)
{
    return (S.top)+1;            //根据下标的规则,数组中的长度为指针+1个元素
}

//清空栈
State clearStack(SqStack *S)
{
    s->top = -1;                //将栈顶指针重新设置为-1,则表示栈空
    return OK;
}

//判断顺序栈是否为空
State isEmpty(SqStack *S)
{
    if( S.top == -1)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

//入栈
State push(SqStack *S, ElemType *e)
{
    if(S->top == MAXSIZE-1)
    {
        printf("栈满\n");
        return FALSE;
    }
    else
    {
        S->top++;                   //栈顶指针加一表示指向一个新的顶部空间
        S->data[S->top] = e;        //将现在指向的元素设置为e
        return OK;    
    }
}



//出栈
State pop(SqStack *S, ElemType *e)
{
    if (S->top == -1)
    {
        printf("栈空\n");
        return ERROR;
    }
    else
    {
        *e = S->data[S->top];
        S->top--;
        return OK;
    }
}



//获取栈顶元素,只查看不出栈
State getTop(SqStack S, ElemType *e)
{
    if(S.top == -1)
    {
        printf("栈满\n");
        return ERROR;
    }
    else
    {
        *e = S.data[S.top];
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值