Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2010, 20:16   #1
Crab2
Пользователь
 
Регистрация: 12.02.2010
Сообщений: 19
По умолчанию Список

помогите пожалуйста, у меня в последней функции косяк получился
надо чтобы последние два элемента поменялись местами

Код:
// класс "Список"
#include <iostream>
// данные
struct Element
{
    int data;
    Element *next;  // указатель на следующий элемент списка
};

// класс и методы
class List
{
    Element *pHead;     // указатель на первый элемент списка
    Element *pPrev;     // указатель на последний элемент списка
    int countElem;      // количество элементов в списке
public:
    List();
    ~List();

    void addToList(int data);
    void printList();
    void delAllList();
    void maxelement(int& max);
    void sortpara(int i, int j);
};

//
List::List()
{
    pHead = NULL;
    countElem = 0;
}

//
List::~List()
{
    delAllList();
}

//
void List::addToList(int data)
{
    Element *temp = new Element;
    if(pHead == NULL)
        pHead = temp;
    else
        pPrev->next = temp;
    temp->data = data;
    temp->next = NULL;
    pPrev = temp;
    countElem++;
}

//
void List::printList()
{
    Element *pTemp = pHead;
    while(pTemp != NULL)
    {
        std::cout << pTemp->data << " ";
        pTemp = pTemp->next;
    }
    std::cout << std::endl << countElem << std::endl;
}

//
void List::delAllList()
{
    while(pHead != NULL)
    {
        Element *pTemp = pHead;
        pHead = pHead->next;
        delete pTemp;
    }
}

void List::maxelement(int& max)
{
    max=pHead->data;
    Element *ptemp=pHead;


        while(ptemp != NULL)
            if(max < ptemp->data )
            {
                max=ptemp->data;
                ptemp=ptemp->next;
            }
            else
                ptemp=ptemp->next;

}
void List::sortpara(int i, int j)
{
    Element *pTemp=pHead;

    for(int k=0; k<i;k++)
        pTemp=pTemp->next;



    Element *E1=pTemp;
    delete pTemp;
    Element *pTemp2=pHead;


    for(int k=0; k<j; k++)
        pTemp2=pTemp2->next;
    Element *E2=pTemp2;
    delete pTemp2;
    if(i<j && E1->data > E2->data)
        {
            Element *pTemp=E1;
            &E2=pTemp;

        }
}
Все и сразу-мечта идиота
Crab2 вне форума Ответить с цитированием
Старый 23.06.2010, 20:20   #2
Crab2
Пользователь
 
Регистрация: 12.02.2010
Сообщений: 19
По умолчанию

ой все нашел ошибку
Все и сразу-мечта идиота
Crab2 вне форума Ответить с цитированием
Старый 23.06.2010, 23:39   #3
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

А теперь перепишем на шаблонах
Потом используем в чем-то большом, и таки вернемся к std::list :D
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка слиянием(1 сорт список+2 сорт список=3 сорт список) Promolol Помощь студентам 0 21.05.2010 23:49
Список Jasper92 Помощь студентам 1 06.05.2010 14:42
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43