добавление элемента в упорядоченный двухсвязный список

есть двухсвязный список с добавлением элемента в конец. не могу сообразить, как реализовать добавление элемента в упорядоченный по убыванию список

#include <iostream>
using namespace std;

struct node
{
    int data;
    struct node* prev; //элемент
    struct node* next;
};

struct list
{
    node* start; //список
    node* end;
};

list* init()
{
    list* my_list = new list(); //выделение памяти под список, изначально он пустой
    my_list->start = NULL;
    my_list->end = NULL;
    return my_list;
};

void add(list* my_list, int value) //функция добавления элемента в список (неупорядоченный)
{   
    node* new_el = new node();
    new_el->prev = my_list->end;
    new_el->next = NULL;
    new_el->data = value;
    if (my_list->end != NULL)
    {
        my_list->end->next = new_el;
        my_list->end = new_el;
    }
    else
    {
        my_list->start = new_el;
        my_list->end = new_el;
    }
};

Ответы (0 шт):