Показать сообщение отдельно

  #11  
Старый 25.07.2009, 15:46
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами: 9705420

Репутация: 21
По умолчанию

Я понимаю листы так:

Он состоит из головы, узла с данными и хвоста. Но я не могу понять роли каждого из элементов. Ну на пример, я вижу роли так - в узле содержатся данные и адрес следующего узла. В голове содержится адрес первого узла. В хвосте содержится адрес головы или как?

В общем посидел, подумал поэкспериментировал...

Код:
#include <iostream>
using namespace std;

class List
{
	public:
		List* next;		
		int data;
};

class Head
{
	public:
		List* next;
};

/*class Tail
{
	public:
		List* last;
};*/


void main()
{
// начало списка, создание первого узла и головы
	List* Node = new List;
	Head* head = new Head;
	//Tail* tail = new Tail;
	head->next = Node;
	int i = 1;
//Добавление:
	while(1)
	{
		cout << "data #" << i << " = ";
		cin >> Node->data;		
		i++;
			if(!Node->data)
			{		
				//tail->last = Node;
				break;
			}
		
		Node->next = new List;
		Node = Node->next;
	
	}

	cout << head->next->data << endl;
}

1. Правильный ли я лист создал?
2. Как мне вывести все значения в листе, начиная с головы?(данный вариант вывода показывает только одно значение с первого узла, хотя в отладке я вижу полную иерархию всех значений)
3. Если лист правильный, то можно ли его оптимизировать?
4. Что вообще нужно с хвостом делать?

Последний раз редактировалось horlyk; 25.07.2009 в 16:50..
 
Ответить с цитированием