1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;
2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;
3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身;根据上述压缩方法,对应的解压缩方法示例如图a所示。
图a
小明编写了一个解压缩VB程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a(1)、a(2)、a(3)……中,压缩数据的个数存储在变量n中,压缩数据显示在文本框Text1中。单击“解压缩”按钮Command1,程序对压缩数据依次进行解压缩处理,解压缩数据显示在文本框Text2中。程序运行界面如图b所示。
图b
Dim a(1 To 100)As Integer '存储压缩数据,最大处理个数为100
Dim b(1 To 1000)As Integer '存储解压缩数据,最大处理个数为1000
Dim n As Integer '存储压缩数据的个数
Private Sub Form_Load()
'压缩数据由上述压缩方法生成
'本过程用于读取压缩数据并存储在数组a中,压缩数据个数存储在变量n中
'代码略
End Sub
Private Sub Commandl_Click()
Dim pa As Integer '存储压缩数组当前处理位置
Dim pb As Integer '存储解压缩数组当前处理位置
Dim firstdata As Integer,count As Integer,iAs Integer
pa=1:pb=1
Do While pa<=n
firstdata=a(pa)
If firstdata <>0 Then '示例1)情况处理
b(pb)=firstdata
pa=pa+1:pb=pb+1
Else
count=a(pa+1)
If count=0 Then '示例2)情况处理
b(pb)=0
pa= ①_ _:pb=pb+1
Else '示例3)情况处理
For i=1 To count
②
Next i
pa=pa+3:pb=pb+count
End If
End If
Loop
Text2.Text=Str(b(1))
For i=2 To ③
Text2.Text=Text2.Text+“,”+Str(b(i))
Next i
End Sub
①②③