|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.04.2013, 15:26 | #1 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 56
|
Реализовать класс список (Си)
Здравствуйте, мне нужно реализовать класс список, ну допустим пусть он будет односвязным. Так вот, объясните мне, незнающему человеку, как вообще нужно создать этот класс? Я знаю, что там должен быть указатель на следующий элемент и т.д. Но с указателями у меня очень туго, я не могу вообще понять принцип действия указателей и следовательно принцип работы списка. Проблема в том, что когда я смотрю какой нибудь пример списка, то я не могу понять все эти указатели, что они делают, на какой элемент они указывают и как потом происходит передача значения другому элементу, для меня это какая-то непробиваемая стена. И мне нужна помощь в этом, не могли бы вы на самом простом примере односвязного списка объяснить это все, как работают указатели в этом классе и вообще все, желательно поподробнее, что бы даже до меня дошло) Вообще классы только недавно начал изучать, но общую суть их понимаю, а вот со списком проблемы)
|
08.04.2013, 15:50 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Возможно, Вам будет интересна вот эта тема. Там обсуждение чуть других вопросов, но можно зафиксировать её как базис.
Так вот, список (как обсуждалось в той теме) базируется на том, что указатель на область памяти может занимать меньше места, чем сам блок памяти. Поэтому возможна такая конструкция: Код:
Код:
Код:
|
08.04.2013, 17:59 | #3 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 56
|
Спасибо, вроде понял, вот написал свой список с двумя функциями добавления элемента в начало и конец списка, как вам такой вариант реализации списка?)
Код:
Последний раз редактировалось Nekit9401; 08.04.2013 в 18:01. |
08.04.2013, 18:35 | #4 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
1) Данные класса настоятельно рекомендуется уводить в private-секцию, если Вы не находите веских причин для иного.
2) То, что Вы назвали ListNode - это уже сам List, в общем-то. Дальше начинаются некоторые тонкие вещи. 3) Всякому new обязан соответствовать delete. В нашем случае, для этого лучше всего подходит деструктор класса ListNode: Код:
Код:
Код:
6) При именовании методов лучше бы описывать то, что они делают, а не то, как они это делают: не AddNodeFront, а AddToFront. А так нормально получилось. |
08.04.2013, 21:20 | #5 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 56
|
Спасибо, учту)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Реализовать класс 'Распсисание' на java. | Alexxl2009 | Помощь студентам | 0 | 30.05.2011 17:54 |
Не получается реализовать глобальный класс | RIO | Visual C++ | 0 | 08.05.2011 18:12 |
реализовать контейнерный класс за $$$ | B1GBEN | Фриланс | 2 | 14.12.2009 00:46 |
реализовать контейнерный класс | B1GBEN | Помощь студентам | 0 | 13.12.2009 14:21 |