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

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

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

31 ответов

29 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Andrii
Адресом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Andrii
Уб это что?

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

Andrii
Уб это что?

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

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

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
18
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
Карта сайта