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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2013, 22:34   #1
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
Сообщение Контейнер и итераторы

Здравствуйте.

Есть класс List, реализующий двусвязный список.
В нём есть клас Node, реализующий узел списка.
В нём есть класс Iterator, реализующий итератор.
Пользовательские данные в узле представлены в виде структуры Film.

list — объект класса List.

Проблема в следующем.
Ввод осуществляется c помощью функции list.Add_Front(...), но узел в списке не создаётся, почему?

Заранее спасибо за любую помощь.

Код:
class List						
{
private:							
	class Node						
	{
	public:		
		Node *next;				
		Node *prev;				
		
		struct Film				
		{
			char *name;			
			char *country;		
			int year;			
			char *genre;		
			char *director;		
			char *starring;		
			int duration;		
			char *story;					
			int rating;			
		} film;					
		
		Node(){}				
		Node(char *n, char *c, int y, char *g, char *di, char *sta, int du, char *sto, int r)	
		{
			film.year = y;								
			film.name = new char [strlen(n)];			
			...
			strcpy(film.name, n);						
			...
		}
		...
void Show()										
		{
			cout << "\t" << film.name << endl << endl;
			cout << "Страна: " << film.country << endl;
			cout << "Год выпуска: " << film.year << endl;
			...
		}
	};			
public:
	class Iterator										
	{
	private:
		friend class List;								
		Node *node;										
	public:
		Iterator(): node(0) {}							
		Iterator(Node *node): node(node) {}				
		Iterator(const Iterator &i): node(i.node) {}	
	...
	};						

private:

	Node *head;											
	Node *tail;											

	List &operator=(const List&);
	List(const List&);

	Iterator head_i;									
	Iterator tail_i;									

public:

	List()															
	{
		head = tail = new Node;							 
		tail->next = 0;									
		tail->prev = 0;	
		head_i = Iterator(head);					
		tail_i = Iterator(tail);						
	}
	...
	void Add_Front(char *n, char *c, int y, char *g, char *di, char *sta, int du, char *sto, int r)
	{
		Node *creator = new Node(n,c,y,g,di,sta,du,sto,r);			
		creator->next = head;									
		creator->prev = 0;									
		head->prev = creator;									
		head = creator;									
		head_i = Iterator(head);									
	}

	...
};

	List list;

int _tmain(int argc, _TCHAR* argv[])
{

	char *n = new char[128];		
	char *c = new char[128];		
	int y;							
	...
							
	List::Iterator iterator;

			cout << "Название фильма: ";
			fflush(stdin);
			gets(n);
			cout << "Страна: ";
			fflush(stdin);
			gets(c);
			cout << "Год выпуска: ";
			cin >> y;
			... 
			list.Add_Front(n, c, y, g, di, sta, du, sto, r);

	return 0;
}

Последний раз редактировалось Blind Guard; 18.05.2013 в 22:49.
Blind Guard вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Итераторы Jamguranga Visual C++ 0 04.04.2013 17:45
Адаптеры и итераторы Mandrivnyk Общие вопросы C/C++ 2 18.11.2011 18:27
итераторы и vector.erase( Teksa Общие вопросы C/C++ 5 28.04.2010 15:05
Контейнер ! curtcobain Общие вопросы Delphi 3 04.02.2009 20:27