Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Friend class list_iter;



}

//определение класса итератора

class{

node* current; //указатель на текущий элемент списка

public:

list_iter(node* new_node=0):current(new_node)

{ }

string & operator* () //разыменование итератора

{

return current->str;

}

list_iter& operator++() // инкремент

{current = current->next;

return *this;

}

bool operator!=(list_iter other) { //сравнение итераторов

return (other.current!= current);

}

bool operator==(list_iter other) { //сравнение итераторов

return (other. current == current);

}

};

В классе закрытый компонент указатель current на объект класса node, представляющий элемент (узел) списка.

В конструкторе current присваивается адрес узла списка или 0 по умолчанию.

Базовые операции для итераторов реализованы как операции – функции.

Используя классы node и list_iter, определим контейнер в виде односвязаного списка

class liststr {

node * beg_node; // первый элемент

node * end_node; // последний элемент

public:

liststr (string&st); // конструктор

void append(string&st); // добавить элемент в конец списка

~liststr(); // деструктор

list_iter begin() // начало списка

{return list_iter(beg_node);}

list_iter end() // конец списка, вернуть ссылку на пустой элемент

{return list_iter(end_node)->next;}

};

//===========================

lister::liststr (string&st){

node * temp=new node;

temp->next=0;

temp->str=st;

beg_node=temp;

end_node=temp;

}

//======================

void lister:: append(string&newStr) {

node * temp=new node;

temp->next=0;

temp->str=newStr;

end_node-> next=temp;

end_node=temp;

}

//==================================

//Print.h

template <class Т>

void Print(T beg, T end) {

int i=0;

while(beg!=end)

{cout<<”[“<<i++<<”]”<<*beg<<”\t”;

++beg;}

cout << endl;

}

//==============================

#include <iostream>





Дата публикования: 2014-11-28; Прочитано: 178 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...