这题c语言用栈怎么做
答案:2 悬赏:70 手机版
解决时间 2021-03-26 03:59
- 提问者网友:山高云阔
- 2021-03-25 08:24
这题c语言用栈怎么做
最佳答案
- 五星知识达人网友:污到你湿
- 2021-03-25 09:40
是括号匹配啊
栈是种先入后出的数据结构
根据这种数组结构的特性可以在一系列入栈和出栈后检查栈是否为空达到括号匹配的目的
如果自己不想写代码的话我可以有偿代劳追问那如果出现(【)】怎么检查追答出栈时对应括号做检查就可以了追问是把所有的左括号右括号都压入栈?追答只入左边就好追问然后遇到匹配的右括号就出栈,那出栈入栈函数都是要自己写追答数据结构要自己构造的不过可以简单构造也不算太麻烦
栈是种先入后出的数据结构
根据这种数组结构的特性可以在一系列入栈和出栈后检查栈是否为空达到括号匹配的目的
如果自己不想写代码的话我可以有偿代劳追问那如果出现(【)】怎么检查追答出栈时对应括号做检查就可以了追问是把所有的左括号右括号都压入栈?追答只入左边就好追问然后遇到匹配的右括号就出栈,那出栈入栈函数都是要自己写追答数据结构要自己构造的不过可以简单构造也不算太麻烦
全部回答
- 1楼网友:梦中风几里
- 2021-03-25 09:50
这个容易啊,遍历每个字符,如果是左括号就压栈,如果是右括号就出栈,如果没找到左括号就直接false,直到最后站内如果有数据就是false,如果刚好没数据就true。追问那还有(【)】这种情况追答不同类型可以建不同的栈内存,也可以用一个栈内存,但是要加类型判断嘛。多少个括号都没关系啊,遇到相同类型的才判断出栈嘛。追问是不是写的指针有问题追答你这逻辑不够清晰,首先你的s分配了两次空间就不对,而且初始化那个函数里面分配空间写法就不对,要在调用函数里面分配空间,需要使用双指针形式。还有,输入数组str也没有全部置0,可能会导致strlen有误。还有,s是Stack指针,你每次使用都只在一个Stack空间上操作,根本没法区分哪种类型的括号。最后,你分配了空间,不释放,造成内存泄漏。我手机不好写代码,有空写一个给你吧。追问c++是不是可以直接用stack追答是有封装好的。但是你这题不是限定的吗?如果不限定,干嘛要用栈,直接计数不就行了?追问没限定一点用c问下,int数据可以直接等于long long型的变量吗追答可以啊,C不是严格类型安全的。追问那我在dev可以编译拿到oj就编译失败追答强制转换一下啊。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯