Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по C/C++

  Все выпуски  

Уроки по C/C++


Информационный Канал Subscribe.Ru

Уроки по C/C++. Рассылки сайта progs.biz
Рассылка № 30
 
Начало > C++ > Основы C++ > Урок 35

Алексей Дубовцев. Microsoft .NET. Наиболее полное руководство.
Алексей Дубовцев. Microsoft .NET. Наиболее полное руководство
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 35.

C/C++
Урок 35. Обмен соседних элементов в списке

Продолжаем работать с нашим класом списка.

Этот урок мы посвятим еще одному вспомогательному методу для нашего класса списка - а именно методу, меняющему два соседних элемента. Какие элементы будут меняться - это будет определяться одним параметром, который и будет задавать пару для обмена - некий элемент и следующий за ним.

Добавьте в класс метод с подходящим для этой цели названием - Change:

class CList
{
public:
    ...
    // Обмен элемента p и следующего.
    void Change(CData * p);
    ...

А вот реализация для метода Change(CData * p):

void CList::Change(CData *p)
{
    // Если следующего элемента просто нет.
    if (p->m_pNext==NULL)
    {
        // то выходим.
        return;
    }
    // Переменная для предыдущего элемента.
    CData * pPrev;
    if (p==m_pFirst)
    {
        // Если наш элемент - первый.
        // Обмен указателей через вспомогательную переменную.
        pPrev = m_pFirst;
        CData * pAux = m_pFirst;
        CData * pNext = p->m_pNext;
        m_pFirst = p->m_pNext;
        p->m_pNext = p->m_pNext->m_pNext; 
        pNext->m_pNext = pAux;
    }
    else
    {
        // Если наш элемент - не первый.
        // Обмен указателей через вспомогательную переменную.
        pPrev = GetPrev(p);
        CData * pAux = pPrev->m_pNext;
        CData * pNext = p->m_pNext;
        pPrev->m_pNext = p->m_pNext;
        p->m_pNext = p->m_pNext->m_pNext; 
        pNext->m_pNext = pAux;
    }
}

Метод обмена достаточно прост - мы меняем значения указателей в полях m_pNext элементво нашего списка. Это мы делаем посредством вспомогательных переменных. При этом у нашего алгоритма 2 части - одна для случая, когда наш элемент первый в списке и другая - когда он в списке не первый.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2004 сайт progs.biz
© 2002-2004 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cpplessons
Отписаться

В избранное