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

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

Войти
Регистрация
Восстановить пароль
 
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
#1

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

16.10.2013, 19:19. Просмотров 448. Ответов 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++):

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
16.10.2013, 19:27 #2
jurok_85, а какую ошибку выдает?
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 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 ===|
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 19:33
Привет! Вот еще темы с ответами:

Создание односвязного списка - C++
Доброго времени суток. И так. Имеется задача. Создание односвязного списка и инициализация его с клавиатуры. Совсем запутался. ...

Сортировка односвязного списка - C++
Здравствуйте уважаемые киберфорумщики! Нужна срочная помощь!!! В общем у меня есть задача которую нужно сделать но нет ни знаний ни...

Вывод односвязного списка - C++
Здравствуйте, помогите найти ошибку в функции. Выводит только первый элемент списка, даже если ты добавил больше.. Вводstruct List*...

Вывод односвязного списка на C - C++
помогите исправить ошибку!не выводит последний элемент списка. пишет: В экземпляре объекта не задана ссылка на объект. вот листинг...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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