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

Ребята, есть какая то логика для адрессов? Хочу сделать глубокую

копию линкед листа, верхние стрелочки легко скопировал, а как быть с нижними не понимаю

31 ответов

54 просмотра

> В этом примере мы создаем функцию deepCopy, которая принимает исходный многосвязный список и возвращает его глубокую копию. Мы создаем новый узел для каждого узла исходного списка, копируем значения данных и указателей на следующий узел и случайный узел. Затем мы обновляем указатели случайных узлов нового списка, чтобы они указывали на правильные узлы в новой копии.

Привет! Нужно хранить все указатели в массиве, тогда станет легче намного

Когда указатели будут в массиве тогда задача станет легче, указатель это просто число, вам я подозреваю нужен не просто указатель а скорее типо ссылки, в котором будет указано имя на объект

А в чём собственно проблема то? Прошёлся по листу, выделил память, скопировал элементы, прошёлся второй раз (одновременно по первому и по второму), проверил сколько контактов, выделил память и записал новые адреса (обычная функция поиска в списке) - всё.

Денис Rabbit
А в чём собственно проблема то? Прошёлся по листу,...

Если чуть оптимизировать, то можно на первом прохождении считать количество контактов и сразу выделять память под массив (это если контактов много), а поиск упрощается, если ты этот список в хеш-мапе хранить будешь.

Andrii- Автор вопроса
Денис Rabbit
А в чём собственно проблема то? Прошёлся по листу,...

Откуда я буду знать новые адреса для контактов?

Andrii
Откуда я буду знать новые адреса для контактов?

Я ж говорю - напиши функцию поиска в списке, берёшь уникальный идентификатор из старого списка, ищешь в новом и копируешь адрес.

Денис Rabbit
Я ж говорю - напиши функцию поиска в списке, берёш...

А вообще, с точки зрения дизайна списка, он у тебя неверный, т.к. имя не является уникальным идентификатором, т.е. у тебя могут быть несколько одинаковых элементов.

Andrii- Автор вопроса
Andrii
В моем случае это возможно

Тогда как первый "Петя" будет отличаться от второго "Пети"?))

Andrii- Автор вопроса
Денис Rabbit
А вообще, с точки зрения дизайна списка, он у тебя...

Я поробал сделать +- тоже самое но с массивами и застрял на том что у меня криво присваиваться на 87 строке поинтер

Andrii
Адресом

Великолепно, а с точки зрения базы данных? Однако ладно, если хочешь, пусть будет уникальный адрес, но это неправильно. В случае адресов просто посчитай порядковый номер контакта и добавь адрес контакта с этим же номером из нового массива.

Andrii- Автор вопроса
Денис Rabbit
Великолепно, а с точки зрения базы данных? Однако ...

Это задания с уника, там не стоит суть практичности кода а именно написания пол енные условия

Andrii- Автор вопроса
Денис Rabbit
Великолепно, а с точки зрения базы данных? Однако ...

Ну вот я так и делаю, а получаеться криво, типо почему то не присвоилось

Andrii
Ну вот я так и делаю, а получаеться криво, типо по...

Давайте начнем с описания структуры списка, как у вас сейчас написано?

Andrii
Ну вот я так и делаю, а получаеться криво, типо по...

Я глянул твой код, ну это очень плохо. Какая семантика у этого выражения?)) originalArray[i] - originalArray[i]->m_Contacts[j];

Денис Rabbit
Я глянул твой код, ну это очень плохо. Какая семан...

Какую смысловую нагрузку несёт это выражение?

Andrii- Автор вопроса
Денис Rabbit
Какую смысловую нагрузку несёт это выражение?

Насколько далеко в массиве находятся поинтеры, так как они упорядочены то как мне кажется точно на таком же расстоянии должны находиться поинтеры с соответствующими значениями в копии, так как массив это большой целостный кусок памяти а не рандом раскиданный поинтеры, я не уверен но на этом базируется идея

Andrii
Насколько далеко в массиве находятся поинтеры, так...

Боюсь сказать но это действительно уб

Andrii
Насколько далеко в массиве находятся поинтеры, так...

Выше написал, почему это неверно. Чтобы такое делать, тебе нужно изначально иметь массив, т.е. линейный блок памяти. А у тебя последовательно хранятся только указатели на эти блоки.

Andrii
Уб это что?

Неопределенное поведение

Andrii
Уб это что?

Уб значит что полагаться на такое поведение нельзя, может сломать от фазы Луны

Andrii- Автор вопроса
Andrii- Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
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
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта