0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|||||||||||
1 | |||||||||||
Указатели, список21.11.2019, 11:22. Показов 436. Ответов 8
Метки нет (Все метки)
Читаю я Страуструп Б. - Программирование. Принципы и практика с использованием C++ (2е издание)
Дочитал до указателей и не понимаю что тут написано. Бьярне говорит нарисуй, так не понятно. Нарисовал только с 3 раза. Все равно не понятно, что тут вообще происходит.
Вот так должно быть. строка 21 (1 на рисунке) все понятно строка 23 (2 на рисунке) все еще понятно строка 25 (3 на рисунке) вот тут не понятно, я даже не понимаю зачем она. Ну и дальше конструкция только сложнее становится. Убрал
0
|
21.11.2019, 11:22 | |
Ответы с готовыми решениями:
8
Указатели. Двусвязный список список (в программе обнуляются указатели на структуры) Отсортировать двусвязный список через указатели Добавить в список указатели на обьекты произвольных типов |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
21.11.2019, 11:26 | 2 |
Это двусвязный список. В нём у каждого элемента есть указатели на следующий и предыдущий элемент. Здесь устанавливается указатель на предыдущий элемент при добавлении нового.
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|
21.11.2019, 11:31 [ТС] | 3 |
О я знаю что это двусвязный список. Без нее нормально же добавляет. Именно эта строка делает двусвязный список? Если так то мне не понятно каким образом.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
21.11.2019, 11:36 | 4 |
Без неё, т.е. без указателя на предыдущий элемент, это будет односвязный список.
Попробуй убрать эту строку и пробежаться по списку от хвоста к голове. Добавлено через 2 минуты Ту добавляешь в голову, у неё, у первого элемента prev == nullptr, нужно сделать, чтобы он указывал на новый элемент
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|
21.11.2019, 11:37 [ТС] | 5 |
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
21.11.2019, 11:40 | 6 |
На твоих рисунках квадратики должны соединяться двумя стрелками, в одну и другую сторону. Каждый элемент должен присутствовать по одному разу, а не по два
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
|
21.11.2019, 11:46 | 7 |
EvilingDark, Вообще нарисовано не очень, особенно для понимания, поэтому ты и не понимаешь суть.
Нарисуй просто блок. Блок раздели на 3 части: 1. Value - какое-то значение (сначала он nullptr весь (next/prev тоже)). 2. Next - указатель на следующий элемент 3. Prev - указатель на предыдущий элемент. Дальше мы добавляем элемент, т.к. список пуст, записываем value в первый блок, указатели оставляем нулевые. Далее добавляем прямо рядом новый блок, с каким-то значением (просто нарисуй его справа, с value = твоему). Дальше тебе надо 2 эти блока "объединить", то бишь указать как они взаимосвязаны, стрелочками указываешь связь между указателями Next/Prev. По факту, у тебя будет просто 2 стрелки туда-сюда (у первого элемента Prev - либо нулптр, либо указывает на хвост - если кольцевой список, с next последнего - аналогично, только на голову если кольцо). Дальше добавляешь 3 блок, проделываешь тоже самое. Увидишь, что всё проще, чем кажется. Остальное уже ложится на руки твои, реализовать этот двусвязный список.
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
||||||
21.11.2019, 17:24 [ТС] | 8 | |||||
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
21.11.2019, 17:26 | 9 |
0
|
21.11.2019, 17:26 | |
21.11.2019, 17:26 | |
Помогаю со студенческими работами здесь
9
Указатели, связной список (Linked List) и динамическое выделение памяти Указатели и указатели на указатели, а также типы данных Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей? Через указатели на указатели посчитать сумму двух чисел и записать в третье Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |