![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
В университете дали задание сделать двухсвязный линейный список, над которым можно было бы выполнять определенные действия.
Но при этом я не понимаю, что представляет этот тип списка. И что именно должны делать те или иные операции, куда добавлять элементы и т.п. Преподавателя увы сложно выловить. Вот само задание: ------- Задание Реализовать линейный двухсвязный список для хранения следующих данных: - фамилия, - год поступления, -средний балл. Обеспечить выполнение операций: - добавление элемента в неупорядоченный список, - удаление элемента с заданным полем «фамилия» в неупорядоченном списке, - сортировка списка по полю «фамилия», - добавление и удаление заданного элемента из упорядоченного списка с поиском «слева» и «справа», - распечатка содержимого списка. ------- То есть должен быть список, его элементы, и связи между элементами. А вот какие связи - это мне неизвестно. Вот так я начинал делать программу (но это неправильно - нужен другой тип списка).
Поясните, пожалуйста, что от меня хотят. Либо если не сложно, как это реализовать. |
|||
|
||||
| DFooz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 3.9.2006 Репутация: нет Всего: нет |
Вот пример двунаправленного списка
|
|||
|
||||
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Спасибо за ответ.
Двунаправленный - это линейный двухсвязный или другой? |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Насколько я помню - двунаправленный список, это список, в котором каждый элемент имеет ссылку как на предыдущий так и на следующий элемент, соответственно можно двигаться по списку как в пряммом так и в обратном направлении...
Если воспользуетесь поиском - недавно аналогичная тема достаточно подробно разбиралась с кучей примеров... (правда не помню в этом конкретном форуме или нет), но тема настолько избитая, что поиск должен выдать огромную массу информации. |
|||
|
||||
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Я такое и сделал вначале. А мне сказали, что надо по-другому.
Может, кто-нибудь знает наверняка? p.s. В поиске нашел многое, но не то... |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Может тот, кто сказал по-другому и скажет как? Или хотя бы что не так? Многие преподаватели несколько по-разному подходят к таким вопросам. |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Ну не имели же они в виду двунаправленную очередь. Их можно отправить читать Кормена и др.
И двухсвязный список сложно понять как-то по иному -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Лично я нет, но иногда такие задания в форумах выплювывают, что я уже ничему не удивляюсь. Иных преподавтелей не мешало бы самих немного подучить. Недавно лично видел, как бедолага студент делал свою минисубд в курсовике по теме "Динамическое распределение памяти". Ну на фига в такой теме заставлять свою СУБД писать?! Человек больше провозился с файловыми операциями чем с заданием по теме... |
|||
|
||||
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Ок, чем отличается линейный двухсвязный от простого двухсвязного?
И в задании говорится: - добавление элемента в неупорядоченный список, ..... - добавление и удаление заданного элемента из упорядоченного списка с поиском «слева» и «справа», То есть возможно указатели next и prev указывают не так что 1 <-> 2 <-> 3 а по-другому? 1 -> 2 -> 3 -> 4 2 <- 4 <- 1 <- 3 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Кто-то писал так:
Отсюда вывод: двусвязный список является частным случаем линейного... Ромб, он же параллелограмм... Хотя быть может я и не прав |
|||
|
||||
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Спасибо, понял. То есть код который я написал в 1 сообщении этой темы, правильно описывает нужный тип списка?
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Описывает да, на счет реализации - не смотрел, если честно.
|
|||
|
||||
| Arks |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Lesh_od
Неплохо бы проверять длину строки sn в конструкторе прежде, чем копировать иначе можешь память попортить. Вместо strcpy(surname,"") не проще ли написать surname[0] = '\0' ? В AddToHead нужно ещё: newvalue->prev=NULL сделать. Также у тебя там описан неупорядоченный список, т.к. всегда добавляется к голове. В упорядоченном списке тебе следует проходить список вперёд или назад и искать ту позицию в которую нужно добавить элемент. Кроме того, у тебя не написан деструктор к классу List! И ещё удаления отдельного элемента из класса List у тебя нет Добавлено @ 16:25 Подписался Это сообщение отредактировал(а) Arks - 4.12.2006, 16:58 |
|||
|
||||
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Arks, Спасибо. Да, я знаю, что над программой надо работать и работать. Сейчас займусь этим, и напишу о результатах.
|
|||
|
||||
| lesha_od |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Взял за основу программу человека из другого варианта, и изменил под свой вариант. Все вроде бы ничего, учитывая, что в C++ я ничего не понимаю в указателях. Но почему-то при выполнении выдается ошибка.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |