• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Односвязный список

  • Автор темы Автор темы Melkaya
  • Дата начала Дата начала
M

Melkaya

Надо написать функцию, которая вставляет в список элемент со значением n после первого элемента со значением m.
Реализовать как односвязный список(используя динамические структуры).
Должны быть возможности добавить в конец списка новый элемент, выпечатать список, уничтожить его.

Можете кто нибудь, пожалуйста, помочь с этим заданием? Заранее спасибо
 
за отдельную умеренную плату могу решить данную задачу если хочешь пиши на мыло andrey-gitara@yandex.ru
 
C++:
#include <iostream>


using namespace std;

//Структура данных списка
struct sList
{
int Value;
sList *ptr;
};

//Класс динамического списка
class dinList
{
sList *Start; //Указатель на начало списка
sList *End; //Указатель на конец списка

public:
dinList() //Конструктор
{
Start = NULL;
}

//Функция добавление в конец
void Add(int Value)
{
sList *lNew = new sList;
lNew->ptr = NULL;
lNew->Value = Value;

if (Start == NULL) { Start = lNew; End = lNew;}
else { 
End->ptr = lNew;
End = lNew;
}
}

//Функция получение значения из конца
int GetValue(void)
{
return End->Value;
}

//Функция удаления из конца
void Del(void)
{
sList *Buf = Start;
while (Buf->ptr != End) //Пока следующий элемент ни стал указателям конца
{
Buf = Buf->ptr;
}
Buf->ptr = NULL; 
delete End;
End = Buf;
}

//Функция очистки списка
void Empty(void)
{
sList *Buf = Start;
Start = NULL;
while (Buf)
{
sList *Temp = Buf->ptr;
delete Buf;
Buf = Temp;
}
}

//Функция вставки элемента Value сразу за первым элементом со значением Dest
//Если такой элемент не найден вставка происходит в конец списка
void AddInVal (int Value, int Dest)
{
sList *Buf = Start;
while (Buf)
{
if (Buf->Value == Dest)
{
sList *lNew = new sList;
lNew->ptr = Buf->ptr;
lNew->Value = Value;
Buf->ptr = lNew;
return;
}
Buf = Buf->ptr;
}
Add(Value);
}

//Функция вывода всех элементов списка
void Print (void)
{
sList *Buf = Start;
while (Buf)
{
cout<< Buf->Value<<" ";
Buf = Buf->ptr;
}
cout<<endl;
}

};


int main(void)
{
dinList a;//Определение списка
//Тесты
a.Add(1); //Добавим 1
a.Add(3); //Добавим 3
a.Add(5); //Добавим 5
a.AddInVal(12,3); //Добавим 12 после 3
a.Print(); //Вывод на экран
a.Del(); //Удалить последний
a.Del(); //Удалить последний
a.Print(); //Вывод на экран
cout<<a.GetValue(); //Получить последний 
a.Empty(); //Очистить
a.Print(); //Вывод на экран
return 0;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD