Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2014, 23:52   #1
Ladis
 
Регистрация: 13.09.2013
Сообщений: 6
По умолчанию Контейнеры и итераторы(двусвязный список)

Придумайте и реализуйте дважды связанный список, которым можно пользоваться посредством итератора. Итератор иметь действия для движения вперед и назад, действия для вставки и удаления элементов списка, и способ доступа к текущему элементу.
должен быть класс-контейнер, класс-итератор, (+ класс алгоритмов)


Код:
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
class Iterator;

class Iterator
{
public:
	friend class List;
	Iterator();
	Iterator(List::Node*p);
	Iterator operator++();
	Iterator operator--();
	Iterator _push();
	Iterator _del();
	Iterator _access();
private:
   List::Node *ptr;
};



 class List  
 {
	 struct Node      
 {
     int x;    
     Node *Next,*Prev; 
 };
	  Node *Head,*Tail; 
 public:
	 friend class Iterator;
     List():Head(NULL),Tail(NULL){}; 
     ~List(); 
     void Show(); 
     void Add(int x); 
 };

Iterator Iterator::operator ++ ()
{

}

List::~List() 
 {   
     while (Head) 
     {
         Tail=Head->Next; 
         delete Head; 
         Head=Tail;
     }
 }

 void List::Add(int x)
 {
   Node *temp=new Node; 
   temp->Next=NULL; 
   temp->x=x;
 
   if (Head!=NULL)
   {
       temp->Prev=Tail; 
       Tail->Next=temp; 
       Tail=temp; 
   }
   else 
   {
       temp->Prev=NULL; 
       Head=Tail=temp; 
   }
 }

 void List::Show()
 {
     Node *temp=Tail;
     
     while (temp!=NULL) 
     {
     cout<<temp->x<<" "; 
     temp=temp->Prev; 
     }
     cout<<"\n";
     temp=Head; 
      while (temp!=NULL) 
     {
     cout<<temp->x<<" "; 
     temp=temp->Next; 
     }
     cout<<"\n";
 }

int main ()
{
 system("CLS");
 List lst; 
 list<List>l;
 lst.Add(100); 
 lst.Show(); 
  system("PAUSE");
}
Может есть у кого проги, в которых наглядно видно как писать итераторы свои для списков, ну или хотя бы просто итераторы?

Последний раз редактировалось Ladis; 22.04.2014 в 00:40.
Ladis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязный Список. loki_man Паскаль, Turbo Pascal, PascalABC.NET 2 23.02.2012 22:59
c++ двусвязный список world12_tk Помощь студентам 1 15.10.2011 12:36
Двусвязный список(C++) fable0097 Помощь студентам 0 16.05.2011 16:03
двусвязный список Olezhka Помощь студентам 1 23.03.2011 11:00