Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
jurok_85
238 / 221 / 76
Регистрация: 21.02.2013
Сообщений: 515
Завершенные тесты: 1
#1

Реализация односвязного списка (конструктор) - C++

16.10.2013, 19:19. Просмотров 425. Ответов 2
Метки нет (Все метки)

Доброго времени суток.
Вот реализую односвязный список, застрял на конструкторе который принимает два итератора:
C++
1
2
3
4
5
6
List(iterator b, iterator e):head(0){
while(b != e){
push_back(*b);
b++;}
 
}
итератор к етому списку уже написан:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class TipUzla> class Iterator{
    friend class List<typename TipUzla::value_type>;
TipUzla* p_uzla;//ekazatel' na tip uzla
Iterator (TipUzla * _p_uzla): p_uzla(_p_uzla){}
public:
void operator++(){p_uzla = p_uzla->_next;}
void operator++(int){p_uzla = p_uzla->_next;}
bool operator==(Iterator<TipUzla> newiter){return(newiter.p_uzla == p_uzla);}
bool operator!=(Iterator<TipUzla> newiter){return !(newiter.p_uzla == p_uzla);}
typename TipUzla::value_type operator*(){return p_uzla->_data;}
Iterator<TipUzla> operator+ (int _i){
Iterator<TipUzla> iter = *this;
for(int i = 0; i != _i; i++){
    if(iter.p_uzla) iter++;
    else break;
        }
        return iter;
    }
};
и сама связка
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>class Node{
friend class Iterator<Node<T> >;
friend class List<T>;
T _data;
Node<T>* _next;
Node() : _next(0) {}
Node(T data): _data(data), _next(0) {}
Node(T data, Node<T>* next): _data(data), _next(next) {}
Node(Node<T>* next): _next(next) {}
public:
typedef T value_type;
};
так вот когда я в main() инициализирую список как
C++
1
2
3
4
5
6
7
8
List<int> my_list;
    my_list.push_back(10);
    my_list.push_back(11);
    my_list.push_back(30);
    my_list.push_back(40);
    my_list.push_front(9);
    my_list.push_front(7);
    List<int> list1(my_list.begin(), my_list.end());
то работает, а когда
C++
1
2
int arr[] = {1, 2, 3, 4, 5};
    List<int> list1(arr, arr + 5);
то выдает ошибку.
вот моя функцие push_back:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void push_back(T data)
    {
        if (head)
        {
            Node<T> *iter = head;
            while(iter->_next!= 0)
                iter = iter->_next;
            iter->_next = new Node<T>(data);
 
        }
        else
            head = new Node<T>(data);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 19:19     Реализация односвязного списка (конструктор)
Посмотрите здесь:

Конструктор копирования для односвязного списка - C++
Запутался уже, подскажите пожалуйста что я делаю не так в конструкторе копирования. файл list.h #ifndef LIST_H #define LIST_H ...

Управление не переходит в конструктор односвязного списка - C++
В коде ниже представлена реализация односвязного списка.Нам дали только прототипы функций,написать им тела надо было самим. Так вот ,мой...

Нужна реализация односвязного списка - C++
Народ спасайте! Возможно у кого-то есть реализация простого списка, или знает кто какую статью на эту тему, или книгу какую по АТД! У меня...

Не могу понять в чем ошибка: реализация односвязного списка - C++
#include &lt;iostream&gt; using namespace std; struct list { int key; list *next; }; void addList(list *start);

Печать односвязного списка - C++
Доброго времени суток. Выполняя задание возникла трудность. Использую метод для этого, но почему-то вместо адекватного текста появляется...

Копирование односвязного списка - C++
в классе содержится односвязный список. соответственно пишу для него оператор присваивания. подскажите, как можно скопировать односвязный...

Шаблон односвязного списка - C++
Код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; template &lt;typename T&gt; class List { private: struct node...

Из односвязного списка в двусвязный - C++
Помогите, кусок переделать в двусвязный список. #include &lt;iostream&gt; using namespace std; struct Node { int data; ...

Построение односвязного списка - C++
Имеется следующая функция считывающая структуру из файла и создающая односвязный список. Проблема в том, что если в файле &gt; 1 э-та -...

Идеология односвязного списка - C++
Здарова! Посмотрел, что такое односвязный список и возникли естественно кое-какие чисто идеологические вопросы. Насколько я понял,...

Заполнение односвязного списка - C++
как ввести данные в список? struct LIST { int data; LIST*next; }; пишу на С++

Ввод и вывод односвязного списка - C++
Немогу ввести и вывести односвязный список.Ввожу список нормально, а выводит очень маленькие отрицательные числа, причём все одинаковые.Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
16.10.2013, 19:27     Реализация односвязного списка (конструктор) #2
jurok_85, а какую ошибку выдает?
jurok_85
238 / 221 / 76
Регистрация: 21.02.2013
Сообщений: 515
Завершенные тесты: 1
16.10.2013, 19:33  [ТС]     Реализация односвязного списка (конструктор) #3
|In function 'int main()':|
104|error: no matching function for call to 'List<int>::List(int [5], int*)'|
50|note: candidates are: List<T>::List(Iterator<Node<T> >, Iterator<Node<T> >) [with T = int]|
List<T>::List() [with T = int]|
List<int>::List(const List<int>&)|
||=== Build finished: 1 errors, 0 warnings ===|
Yandex
Объявления
16.10.2013, 19:33     Реализация односвязного списка (конструктор)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru