Структура данных связанного списка и все связанные с ней операции курируются как общедоступная функция внутри класса.
КОД (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 ›› подожди;
}