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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Односвязный список, с однонаправленным итератором 
:(
    Опции темы
колючка
Дата 9.12.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile Нужно реализовать односвязный список с однонаправленным итератором. 
Общие указания 
1)    Реализовать структуру данных, поддерживающую данный набор операций. Структура данных должна быть представлена шаблонным классом с перегруженными операторами.
2)    Шаблоны функций следует поместить в .h-файл.
3)    Тестовая программа должна содержать вызовы всех операций для структур, содержащих данные как минимум двух различных типов.
1)    Односвязный список с однонаправленным итератором
Функции-члены списка:
a)    Конструктор по умолчанию, деструктор, конструктор копии, operator=
b)    Возвращение количества элементов
c)    Пуст ли список
d)    operator<< и operator+= – добавление элемента в конец списка
e)    operator+= – добавление в конец списка другого списка
f)    find – поиск значения и возвращение итератора на него
g)    insert – вставка элемента в позицию, задаваемую итератором
h)    insert – вставка подсписка в позицию, задаваемую итератором
i)    remove – удаление элемента в позиции, задаваемой итератором
j)    remove – удаление диапазона элементов, задаваемого двумя итераторами
k)    cut – вырезание подсписка, задаваемого двумя итераторами
l)    divide – расщепление списка на два в позиции, задаваемой итератором
Функции-члены итератора списка:
a)    Конструктор
b)    eol – состояние “конец списка”
c)    operator++ – префиксный и постфиксный
d)    operator* – ссылка на текущий элемент в списке
Внешние функции:
a)    foreach – применение функции, передаваемой в качестве параметра, к диапазону значений, задаваемому парой итераторов
b)    find – поиск значения в диапазоне, задаваемом парой итераторов, и возвращение итератора на него
m)    operator==, operator!=
n)    operator+ – слияние двух списков в третий
c)    operator<< – вывод в поток
d)    operator>> – ввод из потока (признак конца ввода – ввод некоторого значения)
Это полный текст задания. Буду благодарна за любую помощь! Вообще не представляю с какой стороны к этой задаче подойти  smile 
PM MAIL   Вверх
MAKCim
Дата 9.12.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата

Вообще не представляю с какой стороны к этой задаче подойти

начни так
Код

template<class T> class list {
private:
    typedef list<T> list_t;
private:
    struct list_node {
        list_node(const T& p_value = T(), list_node *p_next = 0):
            next(p_next), value(p_value) {}
        T value;
         list_node* next;
    };
private:
    list_t *head;
    list_t *end;
private:
    list_t *alloc(const T& value) const throw(bad_alloc) {
        return new list_t(value);
    }
public:
    list(): head(0), end(0) {}

    list_t& operator += (const T& value) {
        list_t *ptr = alloc(value);
        if (!end) head = end = ptr;
        else {
            end -> next = ptr;
            end = ptr;
        }
        return *this;
    }
};



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
колючка
Дата 11.12.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо smile Попробую сделать так!
PM MAIL   Вверх
колючка
Дата 11.12.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



К сожалению, ничего не получается  smile  smile  Во-первых я не могу разобраться что к чему (если не трудно, можешь добавить коментарии) и еще, самое главное, у меня этот код не компилируется smile
PM MAIL   Вверх
Alexeis
Дата 12.12.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(колючка @  11.12.2006,  19:08 Найти цитируемый пост)
и еще, самое главное, у меня этот код не компилируется

Модератор: не забывайте указывать описание ошибки, которая у вас возникла. Отвечающий не телепат и не видит как вы используете приведенный им код.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
колючка
Дата 12.12.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



error C2951: template declarations are only permitted at global, namespace, or class scope
error C2146: syntax error : missing ')' before identifier 'bad_alloc'
 see reference to class template instantiation 'wmain::list<T>' being compiled
error C3646: 'bad_alloc' : unknown override specifier
error C2059: syntax error : ')'

Вот такие вот ошибки выдает мне мой компилятор  smile  Помогите разобраться что он от меня хочет! Пожалуйста, ОЧЕНЬ надо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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