VB, MS Access, VC++, Delphi, Builder C++ принципы(технология), алгоритмы программирования
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: презентация дипломной работы, отчет по производственной практике
| Добавил(а) на сайт: Памфил.
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата
‘ Найти элемент.
Set ptr = m_Sentinel
Do While position > 0 position = position - 1
Set ptr = ptr.NextCell
Loop
Item = ptr.Value
End Function
Эта процедура достаточно проста, но она не использует преимущества связной структуры списка. Например, предположим, что программе требуется последовательно перебрать все объекты в списке. Она могла бы использовать подпрограмму Item для поочередного доступа к ним, как показано в следующем коде:
Dim i As Integer
For i = 1 To LList.NumItems
‘ Выполнить какие-либо действия с LList.Item(i).
:
Next i
При каждом вызове процедуры Item, она просматривает список в поиске
следующего элемента. Чтобы найти элемент I, программа должна пропустить I-1
элементов. Чтобы проверить все элементы в списке из N элементов, процедура
пропустит 0+1+2+3+…+N-1 =N*(N-1)/2 элемента. При больших N программа
потеряет много времени на пропуск элементов.
Класс LinkedList может ускорить эту операцию, используя другой метод
доступа. Можно использовать частную переменную m_CurrentCell для
отслеживания текущей позиции в списке. Для возвращения значения текущего
положения используется подпрограмма CurrentItem. Процедуры MoveFirst,
MoveNext и EndOfList позволяют основной программе управлять текущей
позицией в списке.
=======34
Например, следующий код содержит подпрограмму MoveNext:
Public Sub MoveNext()
‘ Если текущая ячейка не выбрана, ничего не делать.
If Not (m_CurrentCell Is Nothing) Then _
Set m_CurrentCell = m_CurrentCell.NextCell
End Sub
При помощи этих процедур, основная программа может обратиться ко всем
элементам списка, используя следующий код. Эта версия несколько сложнее, чем предыдущая, но она намного эффективнее. Вместо того чтобы пропускать
N*(N-1)/2 элементов и опрашивать по очереди все N элементов списка, она не
пропускает ни одного. Если список состоит из 1000 элементов, это экономит
почти полмиллиона шагов.
LList.MoveFirst
Do While Not LList.EndOfList
‘ Выполнить какие-либо действия над элементом LList.Item(i).
:
LList.MoveNext
Loop
Рекомендуем скачать другие рефераты по теме: доклад по химии, конспект зима.
Категории:
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата