Односвязные списки. Массив

Содержание

Слайд 2

Массив

Набор последовательно расположенных в памяти однотипных элементов

Основы Программирования 2020. Матковский Иван Васильевич

Массив Набор последовательно расположенных в памяти однотипных элементов Основы Программирования 2020. Матковский Иван Васильевич

Слайд 3

Свойства массива

Быстрый доступ к первому элементу

Свойства массива Быстрый доступ к первому элементу

Слайд 4

Свойства массива

Быстрый доступ к элементу по индексу

Свойства массива Быстрый доступ к элементу по индексу

Слайд 5

Свойства массива

Быстрая вставка элемента в конец

Свойства массива Быстрая вставка элемента в конец

Слайд 6

Свойства массива

Быстрое удаление последнего элемента

Свойства массива Быстрое удаление последнего элемента

Слайд 7

Свойства массива

Медленная вставка в начало/середину

Свойства массива Медленная вставка в начало/середину

Слайд 8

Свойства массива

Медленное удаление из начала/середины

Свойства массива Медленное удаление из начала/середины

Слайд 9

Резюме

Быстрый доступ к элементу по индексу
Медленное добавление в начало и середины
Медленное удаление

Резюме Быстрый доступ к элементу по индексу Медленное добавление в начало и
из начала и середины
Трудности с выделением памяти и расширением

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 10

Идея списка

Основы Программирования 2020. Матковский Иван Васильевич

Идея списка Основы Программирования 2020. Матковский Иван Васильевич

Слайд 11

Узел списка и его содержимое

Основы Программирования 2020. Матковский Иван Васильевич

Узел списка и его содержимое Основы Программирования 2020. Матковский Иван Васильевич

Слайд 12

Узел списка (код, картинка)

Основы Программирования 2020. Матковский Иван Васильевич

struct node{
int info;
node* next;
};

Узел списка (код, картинка) Основы Программирования 2020. Матковский Иван Васильевич struct node{

Слайд 13

Список руками

struct node{
int info;
node *next;
};
int main() {
node *first, *

Список руками struct node{ int info; node *next; }; int main() {
second;
first = new node;
first->info = 10;
second = new node;
second->info = 20;
first->next = second;
second->next = NULL;

Основы Программирования 2020. Матковский Иван Васильевич

cout << first->info << endl;
cout << second->info << endl;
cout << first->next->info << endl;
cout << second->next->info << endl;
}

Слайд 14

Список руками

struct node{
int info;
node *next;
};
int main() {
node *first, *

Список руками struct node{ int info; node *next; }; int main() {
second;
first = new node;
first->info = 10;
second = new node;
second->info = 20;
first->next = second;
second->next = NULL;

Основы Программирования 2020. Матковский Иван Васильевич

cout << first->info << endl;
cout << second->info << endl;
cout << first->next->info << endl;
cout << second->next->info << endl;
}

Слайд 15

Список руками 2

node *a, *b, *c;
a = new node;
a->info = 10;
b =

Список руками 2 node *a, *b, *c; a = new node; a->info
new node;
b->info = 20;
c = new node;
c->info = 30;
a->next = c;
b->next = a;
c->next = b;

Основы Программирования 2020. Матковский Иван Васильевич

cout << a->info << endl;
cout << b->info << endl;
cout << c->info << endl;
cout << a->next->info << endl;
cout << a->next->next->info << endl;
cout << b->next->info << endl;
cout << b->next->next->info << endl;
cout << c->next->info << endl;
cout << c->next->next->info << endl;

Слайд 16

Список руками 2

node *a, *b, *c;
a = new node;
a->info = 10;
b =

Список руками 2 node *a, *b, *c; a = new node; a->info
new node;
b->info = 20;
c = new node;
c->info = 30;
a->next = c;
b->next = a;
c->next = b;

Основы Программирования 2020. Матковский Иван Васильевич

cout << a->next->info << endl;
cout << a->next->next->info << endl;
cout << b->next->info << endl;
cout << b->next->next->info << endl;
cout << c->next->info << endl;
cout << c->next->next->info << endl;

Слайд 17

Вывод списка

for(node* cur = start; cur!=NULL; cur = cur->next){
cout << cur->info <<

Вывод списка for(node* cur = start; cur!=NULL; cur = cur->next){ cout info
endl;
}

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 18

Дополнение списка

Основы Программирования 2020. Матковский Иван Васильевич

Дополнение списка Основы Программирования 2020. Матковский Иван Васильевич

Слайд 19

Дополнение списка

Основы Программирования 2020. Матковский Иван Васильевич
newNode = new node;
newNode->info = 50;
newNode->next

Дополнение списка Основы Программирования 2020. Матковский Иван Васильевич newNode = new node;
= NULL;
tail->next = newNode;
tail=newNode;

Слайд 20

Создание списка с нуля

node *newNode = new node;
newNode->info = 10;
newNode->next = NULL;
start

Создание списка с нуля node *newNode = new node; newNode->info = 10;
= newNode;
tail = newNode;

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 21

Ввод-обработка-вывод

node *head=NULL, *tail=NULL, *newNode; int x;
while(cin>>x){
newNode = new node;
newNode->info = x;
newNode->next =

Ввод-обработка-вывод node *head=NULL, *tail=NULL, *newNode; int x; while(cin>>x){ newNode = new node;
NULL;
if(tail==NULL){
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 22

Ввод-обработка-вывод

for(node* cur = head; cur!=NULL; cur=cur->next){
cout << cur->info << " ";
}
cout <<

Ввод-обработка-вывод for(node* cur = head; cur!=NULL; cur=cur->next){ cout info } cout for(node*
endl;
for(node* cur = head; cur!=NULL; cur=cur->next){
cur->info *= 2;
}
for(node* cur = head; cur!=NULL; cur=cur->next){
cout << cur->info << " ";
}
cout << endl;

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 23

Результат работы

Основы Программирования 2020. Матковский Иван Васильевич

Результат работы Основы Программирования 2020. Матковский Иван Васильевич

Слайд 24

Стек vs очередь

Очередь
FIFO (First In – First Out)
Стек
LIFO (Last In – First

Стек vs очередь Очередь FIFO (First In – First Out) Стек LIFO
Out)

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 25

Очередь как черный ящик

Очередь как черный ящик

Слайд 26

Стек как черный ящик

Стек как черный ящик

Слайд 27

Дополнение стека

Основы Программирования 2020. Матковский Иван Васильевич

Дополнение стека Основы Программирования 2020. Матковский Иван Васильевич

Слайд 28

Дополнение списка

Основы Программирования 2020. Матковский Иван Васильевич
newNode = new node;
newNode->info = 50;
newNode->next

Дополнение списка Основы Программирования 2020. Матковский Иван Васильевич newNode = new node;
= NULL;
newNode->next = start;
start =newNode;

Слайд 29

Ввод-обработка-вывод

node *head=NULL, *newNode; int x;
while(cin>>x){
newNode = new node;
newNode->info = x;
newNode->next = NULL;
if(head==NULL){
head

Ввод-обработка-вывод node *head=NULL, *newNode; int x; while(cin>>x){ newNode = new node; newNode->info
= newNode;
} else {
newNode->next = head;
head = newNode;
}
}

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 30

Ввод-обработка-вывод

for(node* cur = head; cur!=NULL; cur=cur->next){
cout << cur->info << " ";
}
cout <<

Ввод-обработка-вывод for(node* cur = head; cur!=NULL; cur=cur->next){ cout info } cout for(node*
endl;
for(node* cur = head; cur!=NULL; cur=cur->next){
cur->info *= 2;
}
for(node* cur = head; cur!=NULL; cur=cur->next){
cout << cur->info << " ";
}
cout << endl;

Основы Программирования 2020. Матковский Иван Васильевич

Слайд 31

Результат работы

Основы Программирования 2020. Матковский Иван Васильевич

Результат работы Основы Программирования 2020. Матковский Иван Васильевич

Слайд 32

Удаление

Основы Программирования 2020. Матковский Иван Васильевич

Удаление Основы Программирования 2020. Матковский Иван Васильевич

Слайд 33

Удаление

Основы Программирования 2020. Матковский Иван Васильевич
prev->next = target->next;
delete target;

Удаление Основы Программирования 2020. Матковский Иван Васильевич prev->next = target->next; delete target;

Слайд 34

Вставка в середину

Основы Программирования 2020. Матковский Иван Васильевич
node newNode = new node;
node->info

Вставка в середину Основы Программирования 2020. Матковский Иван Васильевич node newNode =
= 50;
node->next = NULL;
newNode->next = target->next;
target->next = newNode;

Слайд 35

Вставка в середину

Основы Программирования 2020. Матковский Иван Васильевич

Вставка в середину Основы Программирования 2020. Матковский Иван Васильевич
Имя файла: Односвязные-списки.-Массив.pptx
Количество просмотров: 38
Количество скачиваний: 0