|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2010, 22:22 | #1 |
Регистрация: 17.11.2009
Сообщений: 9
|
Двусвязный список
Ребят,можете помочь пожалуйста!!программа заключается в создании двусвязного списка и работа с ним(перемещение вправо и влево,удаление,вставка всправа и слева,перемещение в начало и конец)...так как тут надо вставлять и передвигаться,я так понял,что надо делать через char..и вот первая проблема,это создание самого списка..запоминает только один элемент...да и со вставкой с обеих сторон у меня проблемы...можете помочь пожалуйста!!
Код:
|
06.07.2010, 15:42 | #2 |
Пользователь
Регистрация: 13.05.2010
Сообщений: 29
|
Не стал разбираться в коде, ответ на вашу первую проблемму.
Создание двунаправленного списка. Вот я сделал пример где двунаправленный список заполнен данными из типизированного файла. Список закольцован. Код:
переделайте немного под свою версию, практика не помещает. Может и поймете где ошиблись. Если что то непонятно справшивайте. 2) Для перемещения в начало и конец в моем примере созданы указатели pbOb(начало),peOb(конец). Думаю тут не должно быть проблем. И что за вставка с обеих сторон?? Объясните поподробнеей.
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
Последний раз редактировалось VektorAB; 06.07.2010 в 15:49. |
07.07.2010, 00:02 | #3 |
Регистрация: 17.11.2009
Сообщений: 9
|
спасибо,сейчас буду разбираться.
у меня есть ещё задача,перемещение по списку вправо и влево.и значит где-нибудь,когда указатель у нас находится не на крайнем элементе,мы можем вставить новый элемент или справа от него..вроде так. |
07.07.2010, 17:37 | #4 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Поправил исходник из поста #1
Код:
Код:
Код:
|
08.07.2010, 20:38 | #5 |
Пользователь
Регистрация: 13.05.2010
Сообщений: 29
|
Так т.е мы можем выбрать слева вставить, или справа.
Или Одновременно вставить и слева и справа. И почему не на крайней позиции. Я сейчас код набрасаю как вставить эллемент сразу с двух сторон, а там сами разберетесь что Вам надо.
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
|
08.07.2010, 21:17 | #6 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
VektorAB, у топик-стартера задание нечёткое, мне оно кажется как программа прогуливающаяся по списку и вставляющая элементы относительно текущей позиции(Великий Могучий Русский язык, понимаешь ли ). У меня, например, перемещение означает не обмен соседних элементов, а переход текущего указателя вправо/влево, а вставка справа/слева - это раздвижение списка относительно текущей позиции и добавление элемента, а не добавление к концу/началу. Так вот код
Код:
|
08.07.2010, 21:34 | #7 |
Пользователь
Регистрация: 13.05.2010
Сообщений: 29
|
)) Всё ясно что написали.
Но я и вовсе не имел ввижу добавление в конец списка и в начало. Я спросил почему нельзя добавить в крайнию позицию ТОбишь первую и последнюю. Мне кажется если добавлять то нужно добавлять везде)) Я вот щас делаю добавление и справа и слева одновременно. Тоесть указал номер эллемента и программа добавляет 2 идентичных компоненты пососедству. Добавление слева сделал, но что справа пока не сходиться. Но я кажись допираю до сути Код:
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
Последний раз редактировалось VektorAB; 08.07.2010 в 21:38. |
08.07.2010, 21:53 | #8 |
Пользователь
Регистрация: 13.05.2010
Сообщений: 29
|
Почему то пришлось заводить 2 вспомогательных указателя, подскажите пожалуйста если можно сделать по другому.
Код:
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
Последний раз редактировалось VektorAB; 08.07.2010 в 22:08. |
08.07.2010, 22:06 | #9 |
Пользователь
Регистрация: 13.05.2010
Сообщений: 29
|
А что же я на код ТС-а не обратил внимания там все стало понятным просле прочтения 4 и 5 пунктов меню, Вставка лиюо справа либо слева.
Ну это то же самое что и написаное выше. Только добавить необходимо условный оператор , в случае если выбирается 1 эллемент при вставке слева, и последный при вставке справа.
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
|
08.07.2010, 23:30 | #10 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Только так и никак по-другому. Добавляем мы 2 элемента, следовательно память выделить мы должны именно под 2 элемента. Правда тут можно упростить, использовав одну переменную для указателей (указатель ведь это всего лишь 2-х байтовое число, которое после установки связи с соседними элементами нам даром не нужно) и применив "наследование" типа Obj для ZvenoOb (это чтобы несколько строк убрать), но вызывать new в любом случае надо дважды.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
двусвязный список | Work Group | Помощь студентам | 0 | 24.05.2010 21:27 |
двусвязный список | klykovka | Помощь студентам | 8 | 22.05.2010 18:58 |
двусвязный список на си++ | mizantrop32 | Общие вопросы C/C++ | 0 | 18.05.2010 17:45 |
Java, двусвязный список | Halifath | Помощь студентам | 0 | 07.05.2010 15:06 |
Двусвязный список | kruserg | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 28.04.2009 10:37 |