vba栈结构应用基础示例

时间:2022-03-07 00:03:06 

栈有很多用处,比如你要进行了一系列的操作,然后要以相反的顺序取消这些操作。栈也是实现很多经典算法的数据结构。下面,举两个基础的示例,进一步认识栈。

示例1:将十进制数转换成二进制

下面的代码将十进制数转换成相应的二进制数:

Dim stkTest As New Stack

‘数制转换代码

Sub convert()

‘要转换成的进制数

Dim n As Integer

‘要转换的十进制数

Dim numValue As Long

‘存放转换中的数

Dim num As Long

‘存放转换后的数

Dim str

‘将n修改为想要转换成的进制

‘将numValue修改为想要转换的数

n = 2

numValue = 1348

num = numValue

‘将转换后的数压入栈

Do Until (num = 0)

stkTest.Push (num – (num \ n) * n)

num = num \ n

Loop

‘逐个数出栈,组合成转换后的结果

Do While (Not stkTest.StackEmpty)

str = str & stkTest.Pop

Loop

MsgBox numValue & “转换为” & n & “进制之后的数为:” & str

End Sub

代码运行后的结果如下图1所示。

vba栈结构应用基础示例

图1

可以将代码中的变量n修改为想要转换的进制,例如n=2,表示将数转换成二进制。如果n=8,那么将数转换成八进制。代码中的变量numValue是要转换的十进制数,你可以修改为任意的十进制数。

示例2:判断括号是否匹配

有时候,我们需要判断表达式中的括号是否匹配,例如,由于输入疏忽,漏掉了相应的右括号。可以使用下面的程序来判断括号是否匹配。为了演示方便,直接使用一个包括符号和数字的数组var来测试括号匹配程序。

Dim testStack As New Stack

Sub MatchBracket()

Dim var As Variant

Dim bln As Boolean

bln = True

var = Array(“{“, “[“,”9”, “(“, “)”, “+”, “]”,”}”)

Dim i As Long

For i = LBound(var) To UBound(var)

Select Case var(i)

Case “{“, “[“,”(”

testStack.Push var(i)

Case “)”

If testStack.StackTop =”(” Then

testStack.Pop

Else

bln = False

End If

Case “]”

If testStack.StackTop =”[” Then

testStack.Pop

Else

bln = False

End If

Case “}”

If testStack.StackTop =”{” Then

testStack.Pop

Else

bln = False

End If

End Select

Next i

If bln Then

MsgBox “表达式中的括号是匹配的”

Else

MsgBox “表达式中的括号不匹配”

End If

End Sub

在代码中,如果是左括号,则入栈。如果是右括号,则与栈顶元素比较。如果相对应,则表明匹配并弹出栈顶元素;如果不对应,则表明括号不匹配。

标签:excel图表制作,excel常用函数,excel数据透视表,Excel教程
0
投稿

猜你喜欢

  • Excel使用UPPER函数将小写字母转换为大写字母

    2022-11-26 15:52:14
  • 需要使用其他国家的语言如何为Win8添加不同国家的语言

    2023-07-17 02:36:22
  • win101903和1806有什么区别哪个好用稳定的分析

    2022-07-17 05:56:12
  • excel图表制作:高亮显示图表中的最大值

    2022-11-12 16:33:11
  • 电脑的系统怎么重装?重装电脑Win10系统的方法

    2023-11-12 13:40:33
  • excel2003表格中如何修改、查找和替换以及删除数据

    2022-07-13 17:50:21
  • 笔记本清洁套装好用吗 笔记本清洁套装的保存与使用方法

    2023-10-08 17:04:06
  • PowerPoint中布尔运算怎么使用呢?

    2022-02-24 13:06:41
  • excel中如何使用相对引用

    2022-12-02 17:38:32
  • wps表格怎样设置自动更新日期

    2022-03-22 09:31:00
  • win10运行腾讯游戏平台每次弹出用户帐户控制该怎么办?

    2023-07-31 19:39:06
  • win7/win8.1系统打开chm文件一片空白解决方法

    2022-07-19 15:58:35
  • Win10 卸载IE浏览器的方法

    2023-08-11 19:59:30
  • wps演示对图片排版的方法图解步骤

    2023-03-14 07:13:57
  • 雨林木风u盘系统怎么安装win10?安装雨林木风win10教程

    2023-11-02 20:28:39
  • 怎样在Word2013中选择打印机

    2023-12-12 16:54:01
  • Word中如何批量输入相同文本?Word中批量输入相同文本方法

    2022-05-05 03:05:36
  • 在Excel中如何查找重复人名并分别提取相关数据

    2023-05-08 15:39:10
  • 我国4G平均速度提升!这次还真没有拖后腿!

    2023-05-28 16:01:17
  • WPS word文字技巧_word怎么画虚线

    2023-09-26 21:17:15
  • asp之家 电脑教程 m.aspxhome.com