Структура данных связанного списка и все связанные с ней операции курируются как общедоступная функция внутри класса.

КОД (C++): вставьте приведенный ниже код в редактор и начните отладку, чтобы понять поток кода.

#include ‹iostream›

используя пространство имен std

узел структуры{

целое значение;

Узел* следующий;

Узел (целое значение)

{

значение = значение;

далее = nullptr;

}

};

класс LinkList{

частное:

Заголовок узла*;

число целых чисел;

общедоступно:

Список ссылок()

{

head = nullptr;

количество = 0;

}

~Список ссылок()

{

если (голова == nullptr)

{

cout ‹‹ «Список пуст. Нечего удалять» ‹‹ endl;

}

Узел* temp = head;

//Узел* delnode = nullptr;

пока (temp != nullptr)

{

head = head-›следующий;

удалить временную папку

temp = голова;

}

}

void Insert(int val)

{

если (голова == nullptr)

{

head = новый узел (val);

количество++;

возврат

}

Время узла* = новый узел (значение);

temp-›следующий = заголовок;

напор = темп;

количество++;

}

void DeleteVal(int val)

{

}

void DeleteAtLocation(int loc)

{

}

void UpdateVal(int val)

{

}

аннулировать PrintLinklist()

{

если (голова == nullptr)

{

cout ‹‹ «Пустой список» ‹‹ endl;

возврат

}

Узел* temp = head;

пока (temp != nullptr) {

cout ‹‹ temp-›значение ‹‹ “-›”;

temp = temp-›следующий;

}

cout ‹‹ "nullptr";

cout ‹‹ endl;

}

целое GetNumElems()

{

количество возвратов

}

аннулировать ReverseLinkListIT()

{

cout ‹‹ «Итеративно инвертировать связанный список» ‹‹ endl;

если (голова == nullptr)

{

cout ‹‹ «список пуст». ‹‹ эндл;

возврат

}

Узел* prev = nullptr;

Узел* curr = head;

Узел* next = nullptr;

пока (curr != nullptr)

{

следующий = текущий-›следующий;

текущий-›следующий = предыдущий;

предыдущая = текущая;

текущий = следующий;

}

голова = предыдущая;

}

аннулировать ReverseLinkListRec()

{

если (голова == nullptr)

{

cout ‹‹ «список пуст» ‹‹ endl;

возврат

}

ReverLinkListUtil(head);

}

Узел* ReverLinkListUtil(Узел* узел)

{

если (узел == nullptr)

{

возвратить nullptr;

}

if (node-›next == nullptr)

{

//тогда мы достигли конца связанного списка. Отмечаем этот узел как головной

голова = узел;

узел возврата

}

Узел* temp = ReverLinkListUtil(узел-›следующий);

temp-›следующий = узел;

узел-›следующий = nullptr;

узел возврата

}

};

int main(int argc, char* argv[])

{

cout ‹‹ «********************************* начинается код************ ****************\n”;

int arr[10] = { 1,5,3,5,6,7,8,10,6,8};

Список ссылок *list = новый список ссылок();

для (целое i = 0; i ‹ 10; i++)

{

список-›Insert(arr[i]);

}

список-›PrintLinklist();

список-›ReverseLinkListIT();

список-›PrintLinklist();

список-›ReverseLinkListRec();

список-›PrintLinklist();

удалить список

cout ‹‹ “*********************************код заканчивается************ ****************\n”;

ожидание;

cin ›› подожди;

}