Как начать просматривать список сначала?

Есть структура двунаправленного списка.

typedef struct DNode
{
	DNode *next;
	DNode *pnext;
	int value;
} DNode;


И есть класс DList, в котором есть эта структура.

class DList
{
	DNode *head = new DNode();
}


Но вот проблема, когда вызываю функцию первый раз все проходит хорошо. Но если вызвать её второй раз, то указатель находится на том месте, где остановится цикл. Как сделать так, чтобы при вызове разных функций, указатель снова показывал на первый узел списка?

int DList::ListNodeNumber() {
	// Определение числа элементов в списке

	int counter = 0; // Описание и инициализация счетчика узлов

	// Проверка указателя на NULL
	while (head) {
		head = head->next;
		counter++;
	}

	return counter;
}
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
longclaps
@longclaps
int DList::ListNodeNumber() {
  int counter = 0;
  DNode *t = head;
  while (t) {
    t = t->next;
    counter++;
  }
  return counter;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы