LINUX.ORG.RU

класс list в c++

 ,


0

1

в общем подскажите, нужно написать класс list, но я c++ вообще не знаю, однако надо.

class List {

	struct Node {
		int data;
		Node *next;
	};
	Node *head;
	public:
	Node *add(int value)
	{
		Node *n;
		if (head == NULL) {
			n = new Node;
			n->next = NULL;
			n->data = value;
			return n;
		} else {
			for (n = head; n->next; n = n->next);
			n->next = new Node;
			n->next->data = value;
			n->next->next = NULL;
			return head;
		}
	}
};
int main(void)
{
	List list;
	for (int i = 1; i <= 8; ++i)
		list.add(i);

че-то не понимаю, как вообще это должно работать. Подскажите пожалуйста.

★★★

Алгоритмы на C++. Фундаментальные алгоритмы и структуры данных.

за*бали уже

anonymous
()

$20 в час и я тебе объясню все от и до

trex6 ★★★★★
()

я c++ вообще не знаю, однако надо

Семестр только начался. До сессии успеешь сам разобраться.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

разобрался уже, по крайней мере с этой задачей, теперь надо сложность алгоритма посчитать

IvanR ★★★
() автор топика
for (n = head; n->next; n = n->next);
n->next = new Node;

вах !

ps/ ЛОР вообще можно использовать вместо отладчика :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

ЛОР вообще можно использовать вместо отладчика :-)

Надо будет к эмаксу присобачить.

ados ★★★★★
()
31 мая 2017 г.

У тебя head всегда остается пустой.

Чтобы не делать for(...) для вставки в конец, сохраняй еще и tail.

ЕМНИП простые типы данных автоматически не инициализируются, поэтому ты можешь получить мусор в head в пустом списке.

Сделай конструктор Node, который сам слинкуется с предыдущим элементом, избавишься от машинерии next = ... и data = ...

Add по идее должен возвращать последний вставленный Node, а не голову.

staseg ★★★★★
()
Последнее исправление: staseg (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.