Я пытаюсь написать код, чтобы найти начало цикла в связанном списке. Вот мой код:Не удается скомпилировать и обнаружить ошибку
#include <iostream>
template <class T>
class LinkedList
{
public:
struct node
{
T data;
node* next;
};
node* head;
LinkedList() : head(NULL){};
void AppendToTail(T data);
void InsertToHead(T data);
void RemoveDuplicates();
void PrintList();
T lastNthNode(int N);
bool operator==(const LinkedList<T>& L);
node* FindBeginningNodeLoop();
};
template <class T>
node* LinkedList<T>::FindBeginningNodeLoop()
{
if (head == NULL)
return NULL;
node* slow = head;
node* fast = head;
while (fast->next != NULL)
{
slow = slow->next;
fast = fast->next->next;
if (slow == fast)
break;
}
if (fast == NULL)
return NULL;
slow = head;
while (slow != fast)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}
Компилятор дает следующие ошибки:
1> main.cpp 1> C: \ Users ... \ linkedlist.h (177): ошибка C2143: синтаксическая ошибка: отсутствует ';' before '*' 1> c: \ users ... \ linkedlist.h (177): ошибка C2065: 'T': необъявленный идентификатор 1> c: \ users ... \ linkedlist.h (177): error C2923: 'LinkedList': 'T' не является допустимым аргументом типа шаблона для параметра 'T' 1> c: \ users ... \ linkedlist.h (200): ошибка C2509: 'FindBeginningNodeLoop': функция-член не объявлена в 'LinkedList' 1> c: \ users ... \ linkedlist.h (5): см. объявление 'LinkedList'
Я не могу найти проблему. Любая помощь приветствуется. Спасибо.
Вот только сообщение об ошибке моего компилятора, дословно. 'blah.cpp: 24: 1: error: неизвестный тип имя 'node' node * LinkedList :: FindBeginningNodeLoop()' –
ftynse
В коде, который вы отправили, всего 47 строк. Где линия 177? –
Возможный дубликат [Что такое ошибка «необъявленного идентификатора» и как его исправить?] (Http://stackoverflow.com/questions/22197030/what-is-an-undeclared-identifier-error-and-how- do-i-fix-it) – sashoalm