|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
||||||
Двусвязные списки, не могу добавить узел с конца22.03.2011, 10:51. Показов 2420. Ответов 16
Метки нет (Все метки)
Делаю лабу по динамическим структурам данным, написал функцию добавления с начала и с конца.
Но, добавление с конца не работает, я не могу найти ошибки или недочета в алгоритме, не могу отследить причину того, что при добавлении узла с конца происходит постоянное перезаписывние вида ввод: 56 ->56 ввод: 4 ->4 А должно в итоге быть как ->56->4
0
|
||||||
| 22.03.2011, 10:51 | |
|
Ответы с готовыми решениями:
16
Двусвязные списки двусвязные списки |
|
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
|
|||||||||||||||||||||
| 22.03.2011, 11:24 | |||||||||||||||||||||
|
Ошибка простая:
В коде:
Замените
1
|
|||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
||||||
| 22.03.2011, 13:08 [ТС] | ||||||
|
Декстер, спасибо тебе огромное!!!
Добавлено через 1 час 15 минут Появилась проблема - как добавить узел в заданную позицию? Какие вообще шаги нужно предпринять для этого?
0
|
||||||
|
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
|
||||||
| 22.03.2011, 13:40 | ||||||
1)смотрим пустой список или нет, если пустой то делаем наш элемент головой 2)Пытаемся дойти до нужной позиции, a)если позиция оказывается больше чем наше количество элементов, то добавляем его в конец б)если позиция внутри, то вставляем узел в нужное место, для этого определяем prev и next элементы нашего узла, prev следующего и next предыдущего Выше показано как можно такое сделать. (первый элемент, естественно 0-ой)
1
|
||||||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
|
| 22.03.2011, 13:59 [ТС] | |
|
Спасибо большое!
0
|
|
|
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
|
|
| 22.03.2011, 16:10 | |
|
Я конечно не специалист, но разве в STL нет готового решения? Почему бы вам его не использовать?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 22.03.2011, 16:47 | |
|
afiskon, слышали об изобретении велосипедов в учебной практике?
0
|
|
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
||
| 22.03.2011, 17:14 [ТС] | ||
|
Добавлено через 16 минут Как теперь из этого списка можно удалить текущий узел? Как удалить заданный узел (по номеру или по значению)? Это все,что мне непонятно на данный момент
0
|
||
|
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
|
||||||||||||||||
| 22.03.2011, 18:26 | ||||||||||||||||
|
Помогу с удалением)
Наверное перемудрил, но делал бы что-то типа такого, чтобы было похоже на предыдущее:
1
|
||||||||||||||||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
|
| 22.03.2011, 19:35 [ТС] | |
|
Декстер, спасибо огромное, буду изучать
А вот вопрос в том - как удалить текущий узел?? Ведь в первых двух функция - добавлении с конца и сначала, я нигде не юзал - текущий узел То есть как бы не понятно стало - удалить текущий узел
0
|
|
|
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
|
||
| 23.03.2011, 10:17 | ||
Обычно "текущим" называют тот, который используется в данный момент (просматривается, редактируется и тд.). Но у вас на данный момент работа со всем списком, а не с какими-то отдельными узлами. Возможно имеется ввиду - удаление узла с которым вы последним работали (который добавили куда-то) но как-то не смотрится, только добавили, сразу его удалять. В общем, вам лучше знать как оно должно выглядеть Если сможете объяснить, то мы тут уже поможем)
0
|
||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
|
| 23.03.2011, 10:36 [ТС] | |
|
Совершенно верно, имеется в виду - удаление текущего узла списка, то есть узла, который только,что добавили, н-р в конце списка. Я так понимаю - нужно сделать указатель current, который будет хранить адрес последнего добавленного узла в списке.
Ладно, а как тогда его удалить, этот текущий узел в отдельной функции для удаления текущего узла н-р remove?
0
|
|
|
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
|
||||||
| 23.03.2011, 12:10 | ||||||
|
Ну как и писал, просто выдергивается часть кода, где само удаление:
1
|
||||||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
||||||||||||||||
| 24.03.2011, 13:23 [ТС] | ||||||||||||||||
|
Переписал функцию удаления текущего узла
ptr->prev->next = ptr->next; Указатели в отладчике все NULL! вызываю функцию так
Весь код
0
|
||||||||||||||||
|
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
|
||||||
| 24.03.2011, 13:40 | ||||||
1
|
||||||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
|||||||||||
| 26.03.2011, 12:27 [ТС] | |||||||||||
|
Декстер, спасибо тебе огромное за твою помощь!!!
Я смог доделать лабу по спискам, стекам и очередям. Только,вот в программе не работают вот эти четыре маленькие функции *** Функции перемещения по списку***: next – возвращает указатель на следующий узел и делает его текущим узлом; prev – возвращает указатель на предыдущий узел и делает его текущим узлом; last – возвращает указатель на последний узел и делает его текущим узлом; first – возвращает указатель на первый узел и делает его текущим Вот весь код. Указанные выше функции почему то работают неправильно
Добавлено через 1 час 31 минуту Я что-то не понимаю Если мы делаем текущим узлом н-р следующий узел, то почему значение расположенное по адресу текущего узла не меняется? Добавлено через 59 минут При вызове пункта меню функции перемещения по списку - работа программы прекращается и отладчик указывает что здесь данные NULL!
вроде должно работать, но увы Добавлено через 19 часов 2 минуты Не смог найти ошибку, подскажите, ребят пожалуйста - в какую сторону копать?
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 32
|
|
| 02.04.2011, 12:40 [ТС] | |
|
Да блин, снова вернулся к этому коду.
Не работают эти 4 функции, я уже изрядно устал искать ошибку
0
|
|
| 02.04.2011, 12:40 | |
|
Помогаю со студенческими работами здесь
17
Двусвязные списки в с++ Двусвязные списки Шаблонные двусвязные списки. Линейные двусвязные списки Задача на двусвязные списки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|