C++ Advanced, Task07_05 - Linked List - срокът за предаване изтече, Pls споделете yourVer...
Здравейте,
много интересна задача, явно е от азбуката на програмиста. И, понеже срокът за предаване мина, който би искал да сподели работещо решение, моля да постне, много ще е полезно.
Ръннах я , изчистих компилационните, но кодът ми не работи. Ще се радвам на съвети по него, за което предварително благодаря! https://pastebin.com/WpX7zStg
Поздрави!
Обръщането на масив също не е сложно за реализация - просто се разменят стойностите на елементи с индекси 0 и lenth-1, 1 и lengh-2 и т.н., докато не стигнем средата. :)
Векторът най-вероятно е по-използваната струкура, но има ситуации, при които листът е по-удачен избор.
При листа имаме константна сложност на добавяне и махане на елементи в двата края (при двойно свързан списък), както и лесно вмъкване или премахване на елементи преди/след всеки нод (стига да сме го достъпили), но нямаме достъп по индекс (за да стигнем до n-тия елемент, трябва да минем през всички преди него). Листът използва повече памет заради нодовете, създаването, триенето и менажирането на които също забавя една идея повече добавянето и премахването на елементи.
Все пак, в ситуации, при които ще се налага често добавяне и махане на елементи (особено ако е в двата края), трябва ни подредба (запазване на последователността при обхождане) и не ни трябва достъп по индекс (вектор, масив) или по стойност/ключ (сет, мап), списъкът може да се окаже най-подходящата структура.
Добър пример за приложението му може да видиш в упражнението към последната лекция, където се използва списък за съхранение на указатели към всички Particle обекти:
На всяка итерация се обхождат последователно всички, извършват се някакви действия с тях, премахват се невалидните и се добавят нови в края.
Ако няма да се налага често премахване и вмъкване на елементи, или пък ни трябва достъп по индекс, векторът е по-удачен избор.