170 похожих чатов

Товарищи, доброго времени суток. Такая проблема, уже несколько суток вожусь

с двусвязным списком, задача простая: удалить элементы стоящие на четных позициях(начинаем с нуля, он четный). Все бы хорошо, но у меня программа доходит только до предпоследнего элемента, соответственно его не удаляет. А почему она не берет последний элемент? А как сделать, чтобы и его тоже обрабатывало? Код функции по ссылке ниже, пастебин
https://pastebin.com/HVVdKXxt

4 ответов

10 просмотров

мне кажется, ты переусложнил

Михаил- Автор вопроса
Anatoly Shirokov
мне кажется, ты переусложнил

нууу, я старался рассмотреть все возможные ситуации

Михаил
нууу, я старался рассмотреть все возможные ситуаци...

ну вот смотри, здесь тоже рассмотрены все возможные ситуации: class node { int id = 0; node* prev = nullptr; node* next = nullptr; public: explicit node(int id) : id(id) {} explicit node(int id, std::unique_ptr<node> &&n) : id(id), next(n.release()) { next->prev = this; } node(const node&) = delete; node& operator=(const node&) = delete; ~node() { delete next; } public: static std::unique_ptr<node> delete_even_nodes(std::unique_ptr<node> r) { node* h = r.release(); assert(h); node* n = h->next; for (int c = 0; h; ++c) { if ((c % 2) == 0) { node* p = h->next; if (h->prev) h->prev->next = p; if (h->next) h->next->prev = h->prev; h->next = nullptr; delete h; h = p; } else { h = h->next; } } return std::unique_ptr<node>(n); } friend std::ostream& operator<<(std::ostream& s, const node& n) { for (const node* h = &n; h; h = h->next) { std::cout << h->id << (h->next?", ":""); } return s; } }; int main() { std::unique_ptr<node> r = std::make_unique<node>(0 , std::make_unique<node>(1 ,std::make_unique<node>(2 , std::make_unique<node>(3) ) ) ); r = node::delete_even_nodes(std::move(r)); std::cout << "result: " << *r; return 0; }

Михаил- Автор вопроса
Anatoly Shirokov
ну вот смотри, здесь тоже рассмотрены все возможны...

Спасибо! Действительно, оказалось, я много пурги лишней написал

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта