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

лекции программирование / polevoy_cpp_2012_spring_lecture_11

.pdf
Скачиваний:
27
Добавлен:
20.04.2015
Размер:
204.11 Кб
Скачать

Объектно-ориентированное программирование

с использованием C++

Полевой Дмитрий Валерьевич к.т.н., доцент КиК

e-mail: oop.misis@gmail.com

АТД и структуры данных

АТД определяет набор допустимых операций

структура данных определяет способ хранения информации и совершения операций (физическое размещение в памяти, реализация)

АТД может реализовываться различными структурами данных

часто называются одинаково

21.04.2012

cppNewb.ru

2

Связный список

список – структура данных, состоящая из узлов

предназначен для хранения данных с последовательным доступом

узел содержит как собственно данные, так и связи с другими узлами

21.04.2012

cppNewb.ru

3

Односвязный список

• однонаправленный список

pHead

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

голова

 

хвост

 

(первый узел)

 

(последний узел)

21.04.2012

cppNewb.ru

4

Односвязный список (узел)

struct SList;

struct SList

{

SList* m_pNext;

T m_data;

};

21.04.2012

cppNewb.ru

5

Двусвязный список

• двунаправленный список

pHead

0

0

21.04.2012

cppNewb.ru

6

Двусвязный список (узел)

struct DList;

struct DList

{

DList* m_pPrev;

DList* m_pNext;

T m_data;

};

21.04.2012

cppNewb.ru

7

Операции над линейным списком

создание (создание первого узла)

уничтожение (удаление всех узлов)

вставка списка (узла)

удаление списка (узла)

навигация по узлам (следующий, предыдущий)

доступ к данным узла

21.04.2012

cppNewb.ru

8

Навигация по линейному списку

pNode

pHead

0

if (0 != pNode)

{

pNode = pNode->m_pNext;

}

21.04.2012

cppNewb.ru

9

Навигация по линейному списку

pNode

pHead

0

if (0 != pNode)

{

pNode = pNode->m_pNext;

}

21.04.2012

cppNewb.ru

10