Colinp
@Colinp
Учу C++

Почему не выводит остальные элементы при работе со списком в C++?

Реализую список и никак не могу решить ошибку в методе viewNotes(). Вроде бы в цикле while он перебирает все элементы до конечного, но выводит только первый элемент списка. Месяца 2 назад начал изучать C++, а руки до этого дошли только недавно.

#include <iostream>

using namespace std;

struct Note {
	unsigned int key = 0;
	Note* next = NULL;
};

void createNote(Note* original) {

	Note* tempNote = original;

	while (tempNote->next != NULL) {
		if (tempNote->next != NULL)
			tempNote = tempNote->next; // ищем последний
	}

	Note* newNote = new Note; // создание нового элемента
	newNote->key = tempNote->key + 1;
	newNote->next = NULL;
	original->next = newNote; //

	cout << "New note created [" << newNote->key << "] <- [" << tempNote->key << "] " << endl;
}

void viewNotes(Note* original) { // В этом методе ошибка :(
	Note* tempNote = original;

	while (tempNote->next != NULL) {
		cout << "Note [" << tempNote->key << "]" << endl;
		tempNote = tempNote->next;
	}

}
int main() {
	Note* origin = new Note; // создание первого элемента

	for (int i = 0; i < 5; ++i) { // создание ещё пяти
		createNote(origin);
	}

	cout << endl; // пробел между строками

	viewNotes(origin);
}
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Adamos
@Adamos
// создание ещё пяти

Один поверх другого ( original->next = newNote; ) вместо записи каждого из них после предыдущего.

while (tempNote->next != NULL) {

Исключает последний элемент (у него уже нет следующего), а в списке всего два элемента (см. выше).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы