![]() |
Добро пожаловать, гость ( Вход | Регистрация )
Публикующим:
1. Задачу можно опубликовать двумя способами:
- создав для нее отдельную тему с информативным названием;
- добавив задачу в готовый сборник (например «Бескрылки», «Мини-задачи», «Вопросы ЧГК») или создав свой (например, «Загадки от /для Светы»).
2. Если вы публикуете задачу, решение которой не знаете, напишите об этом. По умолчанию считается, что вам известен правильный ответ и вы готовы проверять других игроков.
Решающим:
1. В темах запрещается писать ответы и подсказки, если возможность открытого обсуждения не оговорена отдельно (в случае открытого обсуждения для текста следует использовать цвет фона или белый, оставляя другим игрокам возможность самостоятельного решения).
2. Правильность решения можно проверить, написав личное сообщение автору.
![]() |
ierton |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Braingames Сообщений: 2 Регистрация: 12.8.2010 Пользователь №: 20 521 ![]() |
Весь форум не читал, прошу прощения если задача с бородой. Говорят, что спрашивали на собеседовании в гугле.
Нужно реализовать удаление элемента односвязного списка, имея только указатель на удаляемый элемент (известно, что он не является последним). Другими словами, нужно сделать так, чтобы предыдущий элемент стал связан с следующим за данным. Короче говоря: struct Item { void* data; struct Item * next; } ; void delete_item(struct Item * item) { ??? } Список конечный, признак последнего элемента - p.next == 0. Язык - С. |
![]() ![]() |
De_Bill |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Пользователи Braingames Сообщений: 538 Регистрация: 24.7.2010 Пользователь №: 20 304 ![]() |
Ну там какой-то странный вариант дфса конечно получается ну да ладно. хотя да, это вообще будет не дфс
идем по некстам до конца первого списка, создаем элементы второго, пока что только с полями некст дальше берем i-тый элемент первого списка(Аi), и соответствующий ему эл-т второго списка (Bi) пишем Item1=A1 Item2=A2 while (Item1!=Ai.random){ Item1=Item1.next Item2=Item2.next } Bi.random=Item2; Ну и прокручиваем это для каждого i Конечно тут две лишних переменных, но, думаю, это ничего |
Powered by Java |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Модераторы BrainGames Сообщений: 544 Регистрация: 9.6.2008 Пользователь №: 8 397 ![]() |
Ну там какой-то странный вариант дфса конечно получается ну да ладно. хотя да, это вообще будет не дфс идем по некстам до конца первого списка, создаем элементы второго, пока что только с полями некст дальше берем i-тый элемент первого списка(Аi), и соответствующий ему эл-т второго списка (Bi) пишем Item1=A1 Item2=A2 while (Item1!=Ai.random){ Item1=Item1.next Item2=Item2.next } Bi.random=Item2; Ну и прокручиваем это для каждого i Конечно тут две лишних переменных, но, думаю, это ничего т.е. рандом элементы искать для каждого элемента нового списка? Слишком уж долго... О(n^2)... |
![]() ![]() |
![]() |
Упрощённая версия | Сейчас: 18.7.2025, 16:13 |