Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Laborotory of algoritm, Lab Reports of Algorithms and Programming

Labarotory of algoritmic acts

Typology: Lab Reports

2019/2020

Uploaded on 10/31/2020

sergo101
sergo101 🇲🇩

5 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
ЛАБОРАТОРНАЯ РАБОТА № 5.
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ.
Под динамической структурой данных понимается любая структура
данных, занимаемый объем памяти которой не является фиксированным.
Иными словами, в подобной структуре может храниться как два, пять,
двадцать элементов, так и одно большое ничего. Размер подобной структуры
ограничен только объемом оперативной памяти компьютера. Существует
несколько разновидностей динамических структур: список, дерево. Прежде
чем переходить к описанию структур, следует запомнить несколько простых
определений:
Потомок элемент структуры, идущий после текущего. В
зависимости от вида динамической структуры у элемента может быть
более одного потомка.
Предок — элемент структуры, идущий до текущего.
Головной элемент (Head)Head)) — первый элемент списка.
Хвостовой элемент (Head)Tail)) — последний элемент списка.
Структура данных Список
Список это линейная динамическая структура данных, у каждого
элемента может быть только один предок и только один потомок. По
сути своей это очень похоже на обыкновенный массив, с той лишь
разницей, что размер его не имеет ограничений. Списки также
подразделяются на несколько типов.
Односвязный список элемент имеет указатель только на своего
потомка.
Односвязный список
Двусвязный список элемент имеет указатели и на потомка, и на
родителя.
pf3
pf4
pf5

Partial preview of the text

Download Laborotory of algoritm and more Lab Reports Algorithms and Programming in PDF only on Docsity!

ЛАБОРАТОРНАЯ РАБОТА № 5. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ. Под динамической структурой данных понимается любая структура данных, занимаемый объем памяти которой не является фиксированным. Иными словами, в подобной структуре может храниться как два, пять, двадцать элементов, так и одно большое ничего. Размер подобной структуры ограничен только объемом оперативной памяти компьютера. Существует несколько разновидностей динамических структур: список, дерево. Прежде чем переходить к описанию структур, следует запомнить несколько простых определений:  Потомок — элемент структуры, идущий после текущего. В зависимости от вида динамической структуры у элемента может быть более одного потомка.  Предок — элемент структуры, идущий до текущего.  Головной элемент (Head)Head)) — первый элемент списка.  Хвостовой элемент (Head)Tail)) — последний элемент списка. Структура данных Список Список — это линейная динамическая структура данных, у каждого элемента может быть только один предок и только один потомок. По сути своей это очень похоже на обыкновенный массив, с той лишь разницей, что размер его не имеет ограничений. Списки также подразделяются на несколько типов.  Односвязный список — элемент имеет указатель только на своего потомка. Односвязный списокДвусвязный список — элемент имеет указатели и на потомка, и на родителя.

Двусвязный списокЗамкнутый (Head)кольцевой, циклический) список — головной и хвостовой элементы которого указывают друг на друга. Замкнутый список На базе простого однонаправленного списка могут быть построены такие структуры данных, как очередь (queue) и стек (stack).queue) и стек (queue) и стек (stack).stack).). Очередь есть ничто иное, как список, операции чтения и добавления элементов в котором подвержены определенным правилам. При этом, при чтении элемента, он удаляется из очереди. Все операции проводятся по принципу «Первый пришел, первый вышел» (queue) и стек (stack).FIFO — first in, first out). Таким образом, для чтения в очереди доступна только голова, в то время как добавление проводится только в хвост. Стек во многом похож на очередь, с той лишь разницей, что извлечение и добавление элементов в нем происходит по правилу «Последний пришел, первый вышел» (queue) и стек (stack).LIFO — last in, first out). Добавление и извлечение элементов проводится от головы. По принципу похоже на работу обоймы огнестрельного оружия. Двусвязный список на языке C++ Рассмотрим пример реализации простейшего двусвязного списка. Этот и последующие примеры кода будут приведены на языке c++. В примере реализованы операции добавления нового элемента в список и вывод элементов. Элемент списка struct Node { float data; // Данные.

Tail->Next = temp; Tail = temp; } else { temp->Prev = NULL; Head=Tail=temp; } } // Вывод всех элементов списка void List::Show(queue) и стек (stack).) { Node *temp = Head; while(queue) и стек (stack).temp!=NULL) // Просматриваем весь список. { Form1->Memo2->Lines->Add(queue) и стек (stack).FloatToStr(queue) и стек (stack).temp->data)); temp = temp->Next; } } ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

  1. Найдите среднее арифметическое значений информационных полей элементов списка.
  2. Подсчитайте количество положительных и отрицательных элементов в списке.
  3. Постройте копию списка.
  4. Постройте копию списка, изменив поpядок составляющих его элементов на обpатный.
  5. Переставьте элементы списка в обратном порядке, начиная с номера N до номера K, не меняя их pазмещения в памяти компьютера.
  6. Исключите из списка элементы, начиная с номера N до номера K.
  1. Исключите из списка все элементы между двумя элементами с заданными значениями информационных полей.
  2. Элементы списка хранят слова, состоящие из 10 символов, включающих только русские и английские прописные и строчные буквы. Исключите из списка слова, начинающиеся с заданной комбинации символов.
  3. Элементы списка хранят слова, состоящие из 10 символов, включающих только русские и английские прописные и строчные буквы. Исключите из списка слова, содержащие заданную комбинацию символов.
  4. Из исходного списка получите два новых списка, не меняя pазмещения элементов в памяти: 1-й список должен содержать элементы, у которых значение информационного поля больше заданного значения N; 2-й – все остальные элементы.
  5. Из исходного списка получите два новых списка путем копиpования: 1-й список должен содеpжать слова, начинающиеся с заданной комбинации символов; 2-й список – слова, заканчивающиеся заданной комбинацией символов.
  6. Создайте список, вставляя положительные числа непосредственно в начало списка, а отрицательные числа – в хвост списка. Разделите полученный список на два списка, содержащие положительные и отрицательные элементы соответственно, не меняя расположение элементов в памяти.