Форум программистов, компьютерный форум 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 0 9 1 3 9 - если это вбить, то уравнение решается вполне нормально, убираются 2 из одинаковых строк и образуется матрица из 3 строк. 5 неизвестных и последний столбец - это чему они равны.... http://www.cyberforum.ru/cpp-beginners/thread1049333.html
C++ Сортировка в структуре (ошибка в коде)
void sort () { setlocale(LC_ALL, "Russian"); int lo; cout<<endl<<"Введите: "<<endl; cout<<"1 - Если Хотите Отсортировать Фамилии (По Алфавиту)"<<endl; cout<<"2 - Если Хотите Отсортировать Адреса (По Алфавиту)"<<endl; cout<<"3 - Если Хотите Отсортировать Номера Телефонов (По Возрастанию)"<<endl; cout<<"4 - Если Хотите Отсортировать...
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, double y) { return(x - y); }
C++ Компьютерная Графика Нужно решить 2 задачи, нужна помощь, заранее спасибо) Одна тема - одно задача. Задания в виде картинок запрещены. Перепечатаете. Официальные языки форума - русский и английский подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,887
Записей в блоге: 2
Завершенные тесты: 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
 
Текущее время: 16:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru