VB-2012 / 2-cеместр / Дневники / Практики-2011 / Практика_Работа со стеком
.docРАБОТА СО СВЯЗНЫМ СПИСКОМ
Постановка задачи:
Разработать приложение, которое позволяет создавать и отображать связный список, а также пополнять и удалять элементы списка.
Результат работы приложения может быть таким :
Программный код приложения
‘------------ Класс myst для создания связного списка (стека)----------
Public inf As Integer ‘ информационная часть экземпляра
Public nextcell As myst ‘ указатель на следующий экземпляр
‘---------------------------------Окно исходного кода ------------------------------
Option Explicit
Dim mtop As myst ‘Указатель на экземпляр класса myst
‘-----------------------Рабочие подпрограммы и функции---------------------
Private Sub pushStack(st As Integer) ‘Процедура занесение данных в стек
Dim zveno As New myst ‘ Выделить память для звена списка
zveno.inf = Val(st) ‘ Заполнить информационную часть
Set zveno.nextcell = mtop ‘ Определить указатель на следующее звено
Set mtop = zveno ‘ Переопределнть указатель на начала списка
End Sub
Private Sub ShowStack() ' Процедура отображения содержимого стека
Dim zveno As myst ‘ Рабочий указатель
Set zveno = mtop ‘ Установить рабочий указатель на начало стека
Print “ Содержимое стека :”
Do While Not (zveno Is Nothing) ' Цикл до конца стека
Print zveno.inf ‘ Печать информационной части текущего звена
Set zveno = zveno.nextcell ‘ Переход к следующему звену
Loop
End Sub
Private Sub Popol_Click() ' Процедура пополнения содержимого стека
Dim rab, zveno As myst
Dim S, s1 As String
Dim a, b, k As Integer
S = InputBox("Задайте А и В", "Занесение в стек А после В", "")
s1 = S + " "
k = InStr(s1, " ")
a = Val(Trim(Left(s1, k))) ‘ Значение информационной части нового звена
b = Val(Trim(Right(s1, Len(s1) - k))) ‘ Номер звена после которого выполняется вставка
Set rab = mtop
Do While Not (rab Is Nothing)
If rab.inf = b Then
Set zveno = New myst
zveno.inf = a
Set zveno.nextcell = rab.nextcell
Set rab.nextcell = zveno
End If
Set rab = rab.nextcell
Loop
End Sub
Private Sub Udal_Click()' Процедура удаления звена
Dim rab, pred As myst
Dim S As String
Dim a, k As Integer
S = InputBox("Задайте информационную часть удаляемого звена", "Удаление звеньв ", "")
a = Val(S)
If mtop.inf = a Then Set mtop = mtop.nextcell
Set rab = mtop
Set pred = mtop
Do While Not (rab Is Nothing)
If rab.inf = a Then Set pred.nextcell = rab.nextcell
Set pred = rab
Set rab = rab.nextcell
Loop
End Sub
Private Sub Command1_Click() ‘ Кнопка Заполнение стека
Dim cell As myst ‘ Определить указатель на экземпляр класса
Dim S, s1, s2 As String
Dim k As Byte
S = InputBox("Исходные данные", "Заполнение стека", "")
s1 = S + " " ‘ Рабочая строка
k = InStr(s1, " ") ‘ Определить позицию пробела
Do While k <> 0 ‘ Цикл пока строка содержит пробелы
s2 = Trim(Left(s1, k)) ‘ Выделить значение
pushStack (Val(s2)) ‘ Занести в стек
s1 = Right(s1, Len(s1) - k) ‘ Удалить начало строки
k = InStr(s1, " ") ‘ Найти пробел
Loop
End Sub
Private Sub Command2_Click() ' Кнопка Отображение содержимого
ShowStack
End Sub
Для выполнения операций пополнение списка и удаление звеньев из списка добавить соответствующие кнопки и создать сязанные с кнопками процедуры !!!!