![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.12.2012
Сообщений: 5
|
![]()
Моя задача стоит так: Необходимо в списке L, состоящем из n элементов, кол-во которых заранее неизвестно, оставить лишь те эл., которые входят в него по одному разу.
С односвязными списками, до этого, дела не имел вообще, по этому все туманно. После поисков по форуму, как создавать список и заполнять его, вроде бы как немного разобрался, а вот с решением своей задачи вообще туго. Прошу помочь разобраться, как это можно реализовать хоть приблизительно. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Код:
Ещё напишите процедуру(или функцию, это не принципиально) удаления ЛЮБОГО элемента из списка. Написать её так, чтобы она удаляла в цикле все элементы, значение которых совпадает с переданным параметром: DeleteAllElementWithValue( ЗначениеЭлемента) Ещё напишите функцию (удобнее), которая возвращает количество элементов с заданным значением (подсчитывает количество). Всё. это 99.9% задачи. дальше всё совсем просто. цикл по всем элементам списка (от головы). Раз у Вас есть вывод элементов списка - значит цикл перебора у Вас уже тоже есть. внутри цикла if CountValue(ТекущееЗначениеЭлемента) > 1 тогда удалить все элементы из списка, имеющие данное значение: DeleteAllElementWithValue( ТекущееЗначениеЭлемента) профит. ну, если будут затруднениия, приводите тут на форуме свои наработки полностью, пишите, в чём у Вас конкретно возникли затруднения... |
![]() |
![]() |
![]() |
#3 |
Регистрация: 03.12.2012
Сообщений: 5
|
![]() Код:
По поводу подсчета элементов пока туго соображается, как это сделать с указателями и в списке(( с массивами попроще) |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Да, именно это Вам и нужно, удалить из списка все элементы, которые в нём встречаются более одного раза. саму процедуру я не проверял. Выглядит работоспобной. Но не мешало бы потестировать.. Цитата:
да и вообще, цикл перебора списка используется при обработке элементов списка повсеместно. В той же процедуре удаления, например! берём перебор из процедуры del и получаем функцию: Код:
![]() если остались вопросы, то давайте Ваш код целиком - посмотрим, что у вас не получается.. |
||
![]() |
![]() |
![]() |
#5 |
Регистрация: 03.12.2012
Сообщений: 5
|
![]() Код:
И когда первоначальный список выводится, он тоже какой то странный, каждый раз выводятся один и тот же список, если кол-во элементов не менять в нем, и при любом количестве всегда в конце 0 0. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C] Односвязные списки | acmilanfan | Помощь студентам | 0 | 17.05.2012 23:22 |
Односвязные списки. | Killspamers | Помощь студентам | 7 | 19.03.2012 18:59 |
Односвязные списки | Nike0 | Общие вопросы C/C++ | 0 | 26.12.2010 12:07 |
Односвязные списки | Anna T | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 19.12.2010 18:58 |
Односвязные списки | art_stalker | Общие вопросы C/C++ | 5 | 21.04.2010 22:49 |