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

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

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

31 ответов

52 просмотра

> В этом примере мы создаем функцию 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];

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

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

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

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

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

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

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

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

Andrii
Уб это что?

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

Andrii
Уб это что?

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

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта