永发信息网

急求使用栈检查表达式(2+3)*a*(3+b)/(2*(12+8)的括号是否匹配(使用VB语言)

答案:2  悬赏:50  手机版
解决时间 2021-03-31 05:32
急求使用栈检查表达式(2+3)*a*(3+b)/(2*(12+8)的括号是否匹配(使用VB语言)
最佳答案
VB没有指针啊。真要用栈的话必须要指针。VB虽然没有但是有相应的win API函数。CopyMemory可以实现,比较麻烦。
可以用动态数组实现,仿栈的形式,其实也差不多。
Private Sub Command1_Click()
If check(Text1.Text) = True Then
MsgBox "匹配", vbInformation
Else
MsgBox "不匹配", vbCritical
End If
End Sub
Function check(ByVal str As String) As Boolean
Dim n() As String '动态数组
Dim i, j As Integer
Do
i = i + 1
If Mid(str, i, 1) = "(" Or Mid(str, i, 1) = ")" Or Mid(str, i, 1) = "[" Or Mid(str, i, 1) = "]" Or Mid(str, i, 1) = "{" Or Mid(str, i, 1) = "}" Or Mid(str, i, 1) = "<" Or Mid(str, i, 1) = ">" Then
j = j + 1 '
ReDim Preserve n(j) '重新定义数组,并保留数据
n(j) = Mid(str, i, 1)
If (n(j - 1) = "<" And n(j) = ">") Or (n(j - 1) = "{" And n(j) = "}") Or (n(j - 1) = "(" And n(j) = ")") Or (n(j - 1) = "[" And n(j) = "]") Then
j = j - 2 '对消后,数组长度缩小
End If
End If
Loop Until (Len(str) + 1 = i)
MsgBox j
If j = 0 Then
check = True
Else
check = False
End If
End Function
全部回答
不匹配啊,分母那不是少了一个)追问这就是用栈来检查是否匹配,因为少了一个),我不会做了。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
某数的小数点向右移动一位后比原数大7.2原数
撇折点下面加一个横一撇一竖右面加一个耳刀念
DX9还有VC2008安装在哪
解梦 梦见佛经
少年三国志跨服聊天开启等级是多少?
水星mw310r v4版本,无良厂商根本没有该版本
他她公馆怎么样?好不好?值不值得买?
多肉黑腐怎么办 多肉黑腐的原因及解决方法
我男朋友身体很瘦小要怎样使他健壮起来我男朋
AUCMA 澳柯码 天天喜 迷你洗衣机 如何操作
如何正确运用监督执纪 四种形态
连花中的睡连是怎样种植的?
每天跳绳3000下,一个月可以减多少
马云的儿子是怎么死的,马云儿子马元坤之死真
都说处女座虐狮子座,为什么我被狮子座虐惨了
推荐资讯
伊苏真的那么好玩吗?我玩了伊苏6一会,看到
对立统一规律中的对立和统一是不是指区别
怎样制作动态ppt
QQ白名单怎么申请
空调外机的铜管如何拆卸?
玩游戏按住w或a或d走路一顿一顿的,有的时候
中国光纤gpon上行终端是什么意思
matlab 怎么表示log2n!
齿轮传动中,齿轮润滑应选什么油
erk-1和erk-2磷酸化一样吗
p4的角接触轴承内径和外径的公差是多少?
银镯子上的字母数字是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?