класс MyLinkedList {

публичный:

/** Инициализируйте свою структуру данных здесь. */

целочисленный размер = 0; // сохраняем размер связанного списка

Узел * голова = новый узел (0);

МойСвязанныйСписок() {

}

ПОЛУЧИТЬ ЗНАЧЕНИЕ ПО ИНДЕКСУ

/** Получить значение index-го узла в связанном списке. Если индекс недействителен, вернуть -1. */

интервал получить (целый индекс) {

если(индекс›=размер) вернуть -1;

Node* temp=head-›next;

for(int i=0;i‹index;i++) temp=temp-›следующий;

возврат temp-›val;

}

ДОБАВИТЬ НОВЫЙ УЗЕЛ ПРИ НАЧАЛЕ

/** Добавить узел со значением val перед первым элементом связанного списка. После вставки новый узел будет первым узлом связанного списка. */

недействительным addAtHead (целое значение) {

Node* temp=head-›next;

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

head-›next-›next=temp;

размер++;

}

НАКОНЕЦ ДОБАВИТЬ НОВЫЙ УЗЕЛ

/** Добавляем узел со значением val к ​​последнему элементу связанного списка. */

недействительным addAtTail (целое значение) {

Узел* temp=head;

while(temp-›next!=NULL) temp=temp-›next;

temp-›next=новый узел(val);

размер++;

}

ДОБАВИТЬ НОВЫЙ УЗЕЛ В ИНДЕКСЕ

/** Добавить узел со значением val перед узлом index-th в связанном списке. Если индекс равен длине связанного списка, узел будет добавлен в конец связанного списка. Если индекс больше длины, узел не будет вставлен. */

недействительным addAtIndex (индекс int, значение int) {

возврат if(index›size);

Узел* temp=head;

for(int i=0;i‹index;i++) temp=temp-›следующий;

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

temp-›next=новый узел(val);

temp-›next-›next=temp1;

размер++;

}

УДАЛИТЬ УЗЕЛ В ИНДЕКСЕ

/** Удалить индексный узел в связанном списке, если индекс действителен. */

недействительным deleteAtIndex (целый индекс) {

если(индекс›=размер) возврат;

Узел* temp=head;

for(int i=0;i‹index;i++) temp=temp-›следующий;

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

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

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

размер - ;

удалить темп1;

}

};