Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблоны класса 
:(
    Опции темы
shinoby
Дата 29.3.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.3.2008

Репутация: нет
Всего: нет



Как происходит реализация "однонаправленного линейного списка" и "двунаправленного кольцевого списка" (пожалуйста примеры в виде кода и желательно скоментариями для лучшего понимания). Интересны так же все возможные варианты реализации начиная от уровня новичок.  Для каких целей применяется первый и второй вариант.

Это сообщение отредактировал(а) shinoby - 29.3.2008, 10:15
PM MAIL   Вверх
comcon1
Дата 29.3.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Вот безитераторный шаблон для однонаправленного списка.
Написал вставку и удаление, остальное лень как-то.. сам допишешь?
Код

template<class T>
class LIST {
 private:
 data_type *first;
 data_type *last;
 public:
 struct data_type {
   T data;
   data_type *next;
   data_type(T dat_, data_type_ *nxt_):
     data(dat_), next(nxt_) {;}
 };
 LIST(): first(0), last(0) {;}
 inline data_type *first() const {return first;}
 inline data_type *last() const {return last;}
 void push_back(T dat_) {
    if (last)
       last->next = new data_type(dat_, NULL);
    else {
       first = new data_type(dat_, NULL);
       last = first;
    }
 }
 void insert(data_type *ptr, T _dat) {
   data_type *elem = new data_type(_dat,ptr->next);
   ptr->next = elem;
 }
 void delete(data_type *ptr) {
   data_type *cur;
   for(cur = first; cur != 0; cur = cur->next) {
     if (cur->next == ptr) break;
   }
   cur->next = ptr->next;
   delete ptr;
 }
};


Это сообщение отредактировал(а) comcon1 - 29.3.2008, 14:33


--------------------
PM MAIL   Вверх
shinoby
Дата 29.3.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.3.2008

Репутация: нет
Всего: нет



Цитата(comcon1 @ 29.3.2008,  14:29)


За код большое спасибо, однако хотелось бы понять, что может собой представлять двунаправленный кольцевой список, т.к. реализовывать мне необходимо именно его. Образец программы с однонаправленным я уже отыскал, да и твой пример comcon1 многого стоит, а мог бы ты, хотябы намекнуть, что твориться по другую сторону барикад.
PM MAIL   Вверх
chipset
Дата 29.3.2008, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 164



примерно такая-же реализация как и сomcon1 только есть ещё prev указатель и соответственно функции по перенаправлению prev/next.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
warmonger_
Дата 31.3.2008, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Цитата(chipset @  29.3.2008,  22:59 Найти цитируемый пост)
и соответственно функции по перенаправлению prev/next. 

а разве кольцевой список, это не тот, когда последний элемент указывает на первый...
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1113 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.