|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Результаты опроса: Стоит ли перегружать здесь оператор != | |||
Да | 0 | 0% | |
Нет | 2 | 100.00% | |
Голосовавшие: 2. Вы ещё не голосовали в этом опросе |
|
Опции темы | Поиск в этой теме |
07.11.2013, 22:04 | #1 |
Новичок
Джуниор
Регистрация: 07.11.2013
Сообщений: 1
|
Итератор для двусвязного списка
Всем доброго времени суток! В общем лабу я не сдал, НО сдаваться не собираюсь и хочу ее добить.
Проблема: Помогите реализовать вывод узлов двусвязного списка с использованием итератора. Среда: CodeBloks. Прошу прощения, но я не нашел как выделить код C++ #include <iostream> #include <locale.h> using namespace std; class Iterator; class List { private: struct Node { Node(); Node(const Node &original); ~Node(); int core; Node *next, *previous; }; int meter; static Node *head, *tail, *ptr; public: friend class Iterator; List(); List(const List &original) {}; List &operator = (const List &rhs); ~List(); void cyclic_list_creation(); Iterator begin() //Не знаю, как правильно реализовать эти функции { return Iterator(List::head); } Iterator end() { return Iterator(0); } }; class Iterator { public: friend class List; Iterator(); Iterator(List::Node* p); Iterator &operator ++ (); Iterator &operator -- (); int &operator * () { return ptr -> core; } int &operator -> () { return ptr -> core; } bool operator == (Iterator &right) { return ptr == right.ptr; } private: List::Node *ptr; }; Iterator::Iterator(): ptr(0) {} Iterator::Iterator(List::Node* p): ptr(p) {} Iterator& Iterator:perator ++ () { ptr = ptr -> next; return *this; } Iterator& Iterator:perator -- () { ptr = ptr -> previous; return *this; } List::Node::Node(): core(0), next(0), previous(0) {} List::Node::Node(const Node &original): core(original.core), next(0), previous(0) { next = original.next; previous = original.previous; } List::Node::~Node() {} List::List(): meter(0), head(0), tail(0), ptr(0) {} List::~List() { delete head; delete tail; delete ptr; } void List::cyclic_list_creation() { Node *temp; int i; cout << "Введите значение узлов списка:\n"; for (; { cin >> i; if (!i) break; else { temp = new Node; temp -> next = 0; temp -> core = i; } if (head != 0) { temp -> previous = tail; tail -> next = temp; tail = temp; } else { temp -> previous = 0; head = tail = temp; } } } int main() { setlocale(LC_CTYPE,"Russian"); List abc; abc.cyclic_list_creation(); Iterator iter = abc.begin(); Iterator end = abc.end(); for (; !(iter == end); ++iter) //перегружен префиксный оператор { cout << *iter << " "; } return 0; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка двусвязного списка | SoTwisted | Помощь студентам | 1 | 21.02.2012 09:51 |
Сортировка двусвязного списка. | Ninna | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 30.05.2011 13:03 |
перестановка элементов двусвязного списка | mansp | Общие вопросы C/C++ | 1 | 09.02.2011 19:46 |
Итератор списка по значению | Link0 | Общие вопросы по Java, Java SE, Kotlin | 0 | 21.11.2010 14:02 |
[C++] Шейкер-сортировка двусвязного списка | Attenti_ON | Помощь студентам | 0 | 17.11.2009 00:24 |