Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблон односвязного списка, Проблема с добавлением данных!!! 
:(
    Опции темы
daff
Дата 18.11.2008, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.3.2008

Репутация: нет
Всего: нет



Доброго времени суток!!!

Пишу программу, реализующую шаблон односвязного списка, но возникла проблемма с добавлением элементов в список : при добавлении элемента сначало в начало списка, а потом в конец - вылетатет с ошибкой, если наоборот - то всё нормально!!!

Код

#ifndef CLASS_LIST_H_INCLUDED
#define CLASS_LIST_H_INCLUDED

template <class T> class List
{
    struct Element
    {
        T data;
        Element *next;        // указатель на следующий элемент списка
    };

    Element *pHead;           // указатель на первый элемент списка
    Element *pPrev;           // указатель на последний элемент списка
    int countElem;            // количество элементов в списке

  public :

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

    ~List()
    {
        delAllList();
    }

    /*void add_front(T data)
    {
        Element *temp = new Element;

        if(pHead == NULL)
            pHead = temp;
        else
            temp->next = pHead;

        temp->data = data;
        pHead = temp;
        countElem++;
    }*/

    void add_front(T data)
    {
        Element *temp = new Element;

        if(pHead == NULL)
        {
            pHead = temp;
        }
        else
            temp->next = pHead;

        temp->data = data;
        pHead = temp;
        countElem++;
    }

    void add_back(T data)
    {
        Element *temp = new Element;

        if(pHead == NULL)
            pHead = temp;
        else
            pPrev->next = temp;

        temp->data = data;
        temp->next = NULL;
        pPrev = temp;
        countElem++;
    }

    void print()
    {
        Element *pTemp = pHead;

        while(pTemp != NULL)
        {
            cout << pTemp->data << endl;
            pTemp = pTemp->next;
        }
    }

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

    bool IsEmpty()
    {
        if(countElem == 0)
            return true;
        else
            return false;
    }

};

#endif // CLASS_LIST_H_INCLUDED



Код

#include "list_realize.cpp"

int main()
{
    List <int> list;

list.add_front(1);
    list.add_back(4);


    //list.add_back(3);
    //list.add_back(2);
    //list.add_back(1);

    list.print();

    return 0;
}




В чем может быть проблема?
PM MAIL   Вверх
J0ker
Дата 20.11.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Код

    List()
    {
        pHead = NULL;
        pPrev = NULL;
        countElem = 0;
    }
    

    void add_front(T data)
    {
        Element *temp = new Element;
        temp->next = pHead;
        pHead = temp;
        if(pPrev == NULL)
            pPrev = pHead;
        pHead->data = data;
        ++countElem;
    }



--------------------
user posted image
PM MAIL   Вверх
daff
Дата 20.11.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.3.2008

Репутация: нет
Всего: нет



Большое спасибо!!!
PM MAIL   Вверх
Radomir
Дата 6.12.2008, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Цитата(daff @ 18.11.2008,  04:36)
Доброго времени суток!!!

Пишу программу, реализующую шаблон односвязного списка

А если требуется организавать специализацию данного списка под тип 
Код

void(*)(const int&)
?? как быть?
PM MAIL   Вверх
J0ker
Дата 7.12.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 4
Всего: 14



Цитата(Radomir @ 6.12.2008,  21:57)
Цитата(daff @ 18.11.2008,  04:36)
Доброго времени суток!!!

Пишу программу, реализующую шаблон односвязного списка

А если требуется организавать специализацию данного списка под тип 
Код

void(*)(const int&)
?? как быть?

специализировать шаблонный тип данным типом  smile 


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0864 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.