顺序链表

通过数组实现链表。 模块代码

Public Const MaxSize As Integer = 10 ‘定义线性表的大小 ‘定义链表结构类型 Public Type SuqList Data() As String Last As Integer End Type ‘初始化链表 Public Function initSuqList(list As SuqList) As Integer list.Last = 0 ReDim list.Data(1 To MaxSize) End Function ‘销毁链表 Public Function destorySqulist(list As SuqList) As Integer list.Last = 0 ReDim list.Data(1) End Function ‘清空链表 Public Function clearSuqList(list As SuqList) As Integer list.Last = 0 End Function ‘求线性表的长度 Public Function getLength(list As SuqList) As Integer getLength = list.Last End Function ‘判断线性表是否为空 Public Function isEmpty(list As SuqList) As Boolean If (list.Last = 0) Then isEmpty = True Else isEmpty = False End If End Function ‘获取链表中的元素 Public Function getElem(list As SuqList, i As Integer) As String Dim ret ret = Null If i >= 1 And i <= list.Last Then ret = list.Data(i) End If getElem = ret End Function ‘检索元素,返回索引值 Public Function locateElem(list As SuqList, e As String) As Integer Dim i As Integer For i = 1 To list.Last If list.Data(i) = e Then Exit For End If Next i If i >= 0 And i <= list.Last Then locateElem = i Else locateElem = 0 End If End Function ‘插入元素 Public Function insertSuqList(list As SuqList, i As Integer, e As String) As Integer If list.Last = 0 And i = 1 Then list.Data(1) = e list.Last = list.Last + 1 Exit Function End If If list.Last + 1 = i Then list.Data(list.Last + 1) = e list.Last = list.Last + 1 Exit Function End If Dim j As Integer For j = list.Last To i Step -1 list.Data(j + 1) = list.Data(j) Next j list.Data(i) = e list.Last = list.Last + 1 End Function ‘删除元素 Public Function deleteSuqList(list As SuqList, i As Integer) As Integer If list.Last = 1 And i = 1 Then list.Last = 0 Exit Function End If If list.Last = i Then list.Last = list.Last – 1 Exit Function End If Dim j As Integer For j = i To list.Last – 1 list.Data(i) = list.Data(i + 1) Next j list.Last = list.Last – 1 End Function

页面代码

Dim L As SuqList Private Sub Form_Load() Call initSuqList(L) End Sub Private Sub Command1_Click() List1.Clear Call insertSuqList(L, 1, “1234”) Call insertSuqList(L, 2, “3456”) Call insertSuqList(L, 2, “2345”) Call insertSuqList(L, 4, “4567”) Dim i As Integer For i = 1 To L.Last List1.AddItem (getElem(L, i)) Next i End Sub Private Sub Command2_Click() List1.Clear Call deleteSuqList(L, 2) Dim i As Integer For i = 1 To L.Last List1.AddItem (getElem(L, i)) Next i End Sub

运行结果

2021年2月27日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注