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

Разработать шаблон класса для реализации односвязного списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему не работает обход массива? http://www.cyberforum.ru/cpp-beginners/thread1049334.html
Что я делаю не так? int **mas = new int*; for (int i=0; i<5; i++) { for (int j=0; j<5; j++) { mas=new int(i+j); cout<<*mas<<" "; } cout<<endl;
C++ Решение систем линейных уравнений методом Гаусса Такая вот проблема вышла, не работает один случай и никак не могу найти - в чем ошибка. Возьмем к примеру такое уравнение: 0 0 0 1 2 3 6 9 7 2 7 8 0 0 0 2 4 6 0 0 0 4 8 12 5 ... http://www.cyberforum.ru/cpp-beginners/thread1049333.html
C++ Сортировка в структуре (ошибка в коде)
void sort () { setlocale(LC_ALL, "Russian"); int lo; cout<<endl<<"Введите: "<<endl; cout<<"1 - Если Хотите Отсортировать Фамилии (По...
C++ Переписать числа в массив, удалить все нечетные числа
Заданы массивы целых чисел X(n) и Y(k). Три наименьших простых числа из массива Y и числа из массива X, в которых есть цифры «1» и «9» переписать в массив Z. Из массива Z удалить все нечетные числа.
C++ Метод Рунге-Кутта 3 порядка http://www.cyberforum.ru/cpp-beginners/thread1049302.html
Начерикал что-то,вроде бы работает,но не уверен,да и не доходит,как под условия сделать задачи,тыкните,пожалуйста #include "stdafx.h" #include<math.h> #include<stdio.h> double f(double x,...
C++ Компьютерная Графика Нужно решить 2 задачи, нужна помощь, заранее спасибо) Одна тема - одно задача. Задания в виде картинок запрещены. Перепечатаете. Официальные языки форума - русский и английский подробнее

Показать сообщение отдельно
Croessmah
Эксперт CЭксперт С++
13512 / 7670 / 866
Регистрация: 27.09.2012
Сообщений: 18,870
Записей в блоге: 3
Завершенные тесты: 1
20.12.2013, 02:43
Львиная доля готова:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <algorithm>
 
template<class T>
class List
{
public:
    typedef T value_type;
    typedef std::size_t size_type;
 
private:
    struct Knot
    {
        value_type val_;
        Knot * next_;
        Knot(const value_type &val)
        :val_(val), next_(0)
        {}
    };
    Knot * head_;
    size_type nelems_;
 
public:
    //Default constructor
    List() throw()
    :head_(0), nelems_(0)
    {}
    bool empty() const throw()
    { return size() == 0; }
    size_type size() const throw()
    { return nelems_; }
 
private:
    Knot * last() throw() //could be done better
    {
        if(empty()) return 0;
        Knot *p = head_;
        while (p->next_)
            p = p->next_;
        return p;
    }
 
public:
    void push_back(const value_type & val)
    {
        Knot *p = last();
        if(!p)
            head_ = new Knot(val);
        else
            p->next_ = new Knot(val);
        ++nelems_;
    }
    void clear() throw()
    {
        while(head_)
        {
            Knot *p = head_->next_;
            delete head_;
            head_ = p;
        }
        nelems_ = 0;
    }
    //Destructor:
    ~List() throw()
    { clear(); }
    //Iterators:
    class iterator
    {
        Knot * cur_;
    public:
        iterator(Knot *p) throw()
        :cur_(p)
        {}
        bool operator==(const iterator & iter)const throw()
        { return cur_ == iter.cur_; }
        bool operator!=(const iterator & iter)const throw()
        { return !(*this == iter); }
        iterator & operator++()
        {
            cur_ = cur_->next_;
            return *this;
        }
        iterator operator++(int)
        {
            iterator temp(*this);
            operator++();
            return temp;
        }
        value_type & operator*()throw()
        { return cur_->val_; }
        value_type operator*() const
        { return cur_->val_; }
        value_type operator->()
        { return cur_->val_; }
        const value_type operator->() const
        { return cur_->val_; }
    };
    iterator begin() throw()
    { return iterator(head_); }
    iterator begin() const throw()
    { return iterator(head_); }
    iterator end() throw()
    { return iterator(0); }
    iterator end() const throw()
    { return iterator(0); }
    //Copy constructor:
    List(const List & lst)
    :head_(0), nelems_(0)
    {
        for(iterator i = lst.begin(); i != lst.end(); ++i)
            push_back(*i);
    }
    void swap(List & lst) throw()
    {
        std::swap(head_, lst.head_);
        std::swap(nelems_, lst.nelems_);
    }
    List & operator=(const List & lst)
    {
        List(lst).swap(*this);
        return *this;
    }
    //Conversion constructor
    template<class U>
    List(const List<U> &lst)
    :head_(0), nelems_(0)
    {
        for(typename List<U>::iterator iter = lst.begin(); iter != lst.end(); ++iter)
            push_back(*iter);
    }
    template<class U>
    List & operator=(const List<U> &lst)
    {
        List(lst).swap(*this);
        return *this;
    }
    //Sequence constructor:
    template<class Iter>
    List(Iter first, Iter last)
    :head_(0), nelems_(0)
    {
        for(;first!=last; ++first)
            push_back(*first);
    }
};
 
#include <iostream>
using std::cout;
using std::endl;
 
int main()
{
    const char MAX_LIMIT = 127;
    List<short> listA;
    //...
    List<char> listB = listA; //without the conversion constructor this would not go very far!
    for(char i = 0; i < MAX_LIMIT; ++i)
        listB.push_back(i);
    for(List<char>::iterator iter = listB.begin(); iter != listB.end(); ++iter)
        cout << *iter << endl;
}
http://stackoverflow.com/questions/3...ible-iterators
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru