Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Задача на списки


Автор: koder 6.2.2006, 00:17
Составить программу, которая объединяет два упорядоченых
по возрастанию линейных одномерных одноправленных списка
L1, L2 в один упорядоченный ЛОЗ L3.

Как делать?

Автор: Snowy 6.2.2006, 11:09
Модератор: Перемещено из Паскаля

Автор: MAKCim 6.2.2006, 17:51
Код

list* make_list(list* list_a, list* list_b)
{
    list* a=list_a, *b=list_b, *temp=0;
    while (a && b)
    {
        if (a->value>b->value)
        {
            if (!temp) temp=b;
            else
            {
                temp->next=b;
                temp=temp->next;
            }
            b=b->next;
        }
        else 
        {
            if (!temp) temp=a;
            else
            {
                temp->next=a;
                temp=temp->next;
             }
            a=a->next;
        }
    }
    while (a) temp->next=a, a=a->next, temp=temp->next;
    while (b) temp->next=b, b=b->next, temp=temp->next;
    temp->next=0;
    return temp;
}

list - это не STL контейнер, а какая-то гипотетическая структура
ps. возможно алгоритм можно улучшить

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)