|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.02.2009, 17:37 | #1 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Реализация однонаправленного шаблонного связанного списка
В этом примере реализован простой шаблонный связанный список, который позволяет работать с любыми типами данных. Возможно пример будет полезен для новичков (но он потребует от вас знания шаблонов).
Опытных программистов и профессионалов прошу предложить идеи по улучшению данной реализации. Основная задача списка - возможность работы с любыми типами данных, добавление данных в конец списка, и удаления данных из любого места списка. Реализация самого списка: Код:
Пример использования списка: Код:
Спасибо за внимание Жду комментариев. P.S Основа примера взята из книги C/C++. Архив программ
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
23.02.2009, 18:40 | #2 |
Maniac
Форумчанин
Регистрация: 03.01.2009
Сообщений: 450
|
Вместо
Код:
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
|
23.02.2009, 19:14 | #3 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Напиши конструктор для класса node, чтобы не писать
Код:
Код:
Кстати, для строк твой список не покатит. Потому что строки копируются при помощи strcpy, поэтому следует написать реализацию добавления отдельно для строк. |
24.02.2009, 00:53 | #4 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Спасибо, учту.
ISergeyN, что такое "интератор"? =)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
24.02.2009, 04:44 | #5 |
Maniac
Форумчанин
Регистрация: 03.01.2009
Сообщений: 450
|
как в stl-e список организован видел? тоесть
Код:
Код:
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
|
24.02.2009, 12:06 | #6 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Ясно. Ну это, как я понимаю, сделано для того, чтобы случайно не вылезти за границы списка... мне это не нужно, я так думаю =))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
24.02.2009, 18:23 | #7 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Нет, просто есть классы-контейнеры, которые умеют только хранить в себе информацию, ну там добавлять удалять и так далее. А есть классы итераторы - которые "ходят" по контейнерам. Тоесть получить доступ к информации в контейнере можно только через итератор. Допустим вывод содержимого контейнера - через итератор.
|
24.02.2009, 18:50 | #8 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Ясно. Но у меня же класс не контейнер, ибо можно получить доступ к данным через функции самого класса, значит и интератор не нужен, так?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
24.02.2009, 20:45 | #9 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Ну посмотрите - чтобы освоить все функции вашего класса, нужно знать все функции, а они по названиям отличаются от стандартных. Поэтому начинающий программер врядли быстро освоит ваш список. По сравнению с stl-овским списком ваш немного сложноват.
Да и не для всех типов он подойдет. К тому же у вас нет никакой обработки данных в списке. |
24.02.2009, 22:04 | #10 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
А какую обработку данных можно сделать? Сортировку не получится, ибо список чаще всего будет использоваться для хранения структур, а рассмотреть все возможные структуры в списке, естественно, невозможно. Позже добавлю возможность сохранять и загружать список из файл, это будет полезная функция
И еще есть идея реализовать этот список как DLL, что бы использовать его в программах на Си. Возможно ли это будет сделать и вообще, стоит ли оно того? Проще наверно просто переписать его под Си, но с DLL интереснее =))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Последний раз редактировалось Blade; 24.02.2009 в 22:06. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программная реализация однонаправленного линейного списка | Денис Ст | Помощь студентам | 2 | 14.01.2014 21:50 |
С++ перегрузка операций для шаблонного класса | TIN | Помощь студентам | 7 | 29.03.2009 15:24 |
Загрузка связанного списка из файла (Си) | Blade | Общие вопросы C/C++ | 4 | 14.12.2008 15:00 |
Ctrl+Z реализация | delphin100 | Общие вопросы Delphi | 6 | 10.09.2008 06:59 |
помогите удалить элемент из связанного списка | kermit | Помощь студентам | 5 | 13.06.2008 10:14 |