Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VB-2012 / 2-cеместр / Дневники / Практики-2011 / Практика_Работа со стеком

.doc
Скачиваний:
10
Добавлен:
26.03.2015
Размер:
58.37 Кб
Скачать

РАБОТА СО СВЯЗНЫМ СПИСКОМ

Постановка задачи:

Разработать приложение, которое позволяет создавать и отображать связный список, а также пополнять и удалять элементы списка.

Результат работы приложения может быть таким :

Программный код приложения

------------ Класс 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

Для выполнения операций пополнение списка и удаление звеньев из списка добавить соответствующие кнопки и создать сязанные с кнопками процедуры !!!!