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

Отчет к ПР7

.docx
Скачиваний:
25
Добавлен:
24.01.2023
Размер:
21.02 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Кафедра безопасности информационных систем

ОТЧЁТ

по практической работе № 7 на тему: «Разработка и применение циклического списка.

Задача Иосифа.»

по дисциплине «Алгоритмы и структуры данных»

Выполнил: студент группы ИСТ-114, Медведева С.Г.,

«16» ноября 2022 г. ___________/Медведева С.Г.

Принял: к.ф.-м.н., доцент, И.А. Моисеев

«16» ноября 2022 г. ___________/ И.А. Моисеев /

1 Основная часть

1.1 Цель работы

Разработка и применение циклического списка. Задача Иосифа.

1.2 Результаты выполнения работы

#include <iostream> using namespace std; struct List{ List * next; int data; }; void addList (List ** root, int a){ if (*root != nullptr){ List * pList = *root; while (pList->next != *root){ pList = pList->next; } List * pList2 = new List(); pList2->data = a; pList->next = pList2; pList2->next = *root; } else{ List * pList = new List(); pList -> data = a; pList->next= pList; *root = pList; } } void printList (List ** root){ List *pList = *root; if (pList!= nullptr) { do { cout << pList->data << " "; pList = pList->next; } while (pList != *root); } } List** findList (List ** root, int host){ List* pList = *root; for (int i {}; i < host-2; i++){ pList = pList->next; } List** pList1 = new List * (); *pList1 = pList; //cout << "Значение удаляемого узда ->" << pList->next->data << endl; return pList1; } void delList (List ** root,List** pListDel){ List* pList = *pListDel; if (pList->next == *root && pList == *root){ delete(pList); *root = nullptr; } else{ List* pList1 = *pListDel; pList1= pList1->next; pList->next = pList->next->next; delete(pList1); *root = pList->next; } } int main() { List ** root = new List*(); *root = nullptr; for (int i{2}; i < 21; i++){ cout << endl << endl << "При м = " << i << endl; for (int j{}; j < 20;j++){ addList(root,j+1); } cout << "Список в прямом порядке\n"; printList(root); int host = i; List *pList = *root; while (pList->next != *root || pList != *root) { delList(root, (findList(root, host))); pList = *root; } cout << endl << "В списке остался узел со значением: " << pList->data; delete(pList); *root = nullptr; } return 0; }

Результат выдачи:

При м = 2

В списке остался узел со значением: 9

При м = 3

В списке остался узел со значением: 20

При м = 4

В списке остался узел со значением: 17

При м = 5

В списке остался узел со значением: 7

При м = 6

В списке остался узел со значением: 20

При м = 7

В списке остался узел со значением: 3

При м = 8

В списке остался узел со значением: 1

При м = 9

В списке остался узел со значением: 6

При м = 10

В списке остался узел со значением: 3

При м = 11

В списке остался узел со значением: 15

При м = 12

В списке остался узел со значением: 11

При м = 13

В списке остался узел со значением: 17

При м = 14

В списке остался узел со значением: 11

При м = 15

В списке остался узел со значением: 7

При м = 16

В списке остался узел со значением: 1

При м = 17

В списке остался узел со значением: 6

При м = 18

В списке остался узел со значением: 5

При м = 19

В списке остался узел со значением: 11

При м = 20

В списке остался узел со значением: 2

САНКТ-ПЕТЕРБУГР

2022

Соседние файлы в предмете Алгоритмы и системы данных