c++栈的问题,写个程序解决括号的匹配问题

c++栈的问题,写个程序解决括号的匹配问题,第1张

#include<iostream>

using namespace std

void print(int N){

int temp=N

int count=0

stack<int>bi

do{

bi.push(temp%2)

temp/=2

count++

}while(temp!=0)

while(count--)

cout<<endl

}

只有10进制转2进制才要Stack.

上面的只是10进制转2进制的Function.

main的话自己写吧...

----------------

括号匹配的话,只要遇到一个左括号就把它放入栈里面,遇到一个右括号就从栈里面取顶进行匹配....

如果匹配成功,就读取下一个括号,直至读完最后一个括号,并且栈也被清空,那么匹配成功...

如果过程中出现匹配错误,如左右括号"[]()"不一致,栈中已无括号可匹配,或者最后栈中还有括号未进行匹配,都属于括号匹配失败......

另外,虚机团上产品团购,超级便宜

用栈完成括号匹配 这篇是c写的。http://blog.chinaunix.net/uid-7864162-id-2038901.html

c++的话,用c++自带的容器类就可以了。

求n的阶乘

#include<iostream>

#include <stack>

int factorialByStack(int num)

using namespace std

int main(void)

{

int n = 10

int result = 0

result = factorialByStack(n)

std::cout<<result<<std::endl

return 0

}

int factorialByStack(int num)

{

stack<int>tmp

for(num != 0--num)

{

tmp.push(num)

}

int result = 1

while( !tmp.empty() )

{

result *= tmp.top()

tmp.pop()

}

return result

}

假设表达式中允许包含三种括号:圆括号( )、方括号[ ]和花括号{ },其嵌套的顺序随意。

{ ( [ ] ( ) ) }或[ { ( [ ] [ ] ) } ]等为正确的格式,[ ( ] 、( [ ( ) ) 、( ( ) ]均为不正确的格式。

检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。

例如考虑下列括号序列:

当计算机接受了第一个括号后,它期待着与其匹配的第八个括号的出现,然而等来的却是第二个括号,此时第一个括号‘[’只能暂时靠边,而迫切等待与第二个括号相匹配的、第七个括号‘)'的出现...这个处理的过程与栈的特点相吻合。

由此,在算法中设置一个栈,每读入一个括号,若是右括号,则使置于栈顶的最急迫的期待得以消解,若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。另外,在算法的开始和结束时,栈都应该是空的。

BracketMatching.c利用了前面的C封装的顺序栈对象 用线性表表示的顺序栈

实现了输入任意一串字符串,检测字符串中三种括号是否匹配的功能。

github源码

运行BracketMatching,显示:

示例:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8062246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存