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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2008, 21:53   #1
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию Шаблонный односвязный список

Как можно создать односвязанный список при помощи шаблона и организавать специализацию данного списка под тип void(*)(const int&)?
Код:
template <typename T>
void(*) spis(T const int& t)
{

}
_ares_ вне форума Ответить с цитированием
Старый 05.12.2008, 22:36   #2
_alexey_
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 13
По умолчанию

вопрос несовсем понятен, про пример кода вообще промолчу...

незнаю то или нет, но вот пример создания ччастичной специализации для класса списка:
Код:
typedef void(*)(const int& t) func_ptr;
template<typename T> 
class list {
...
};
template<>
class list<func_ptr> {
...
};
_alexey_ вне форума Ответить с цитированием
Старый 06.12.2008, 20:48   #3
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию

А возможно реализовать все без классов но на шаблоне?
_ares_ вне форума Ответить с цитированием
Старый 06.12.2008, 21:07   #4
_alexey_
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 13
По умолчанию

если _очень_ хочется, то можно сделать всё только через функции.
объявление специализации для функции будет выглядеть примерно также как для класса.
_alexey_ вне форума Ответить с цитированием
Старый 06.12.2008, 21:35   #5
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию

Вот односвязный список но без спецификации void(*)(const int&).
Как мне ее прописать? На сколько я знаю typedef невозможно переопределить тип.
Код:
#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;
        pPrev = NULL;
        countElem = 0;
    }

    ~List()
    {
        delAllList();
    }


    void  add_front(T data) //void(*)(const int&).
    {
        Element *temp = new Element;
        temp->next = pHead;
        pHead = temp;
        if(pPrev == NULL)
            pPrev = pHead;
        pHead->data = data;
        ++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
int main(int argc, char* argv[])
{
	 List <int> list;

    list.add_front(1);
    list.add_back(4);
	list.add_back(3);
    list.print();
	getch();
	return 0;
}
_ares_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализация стека через односвязный список snusnu Общие вопросы C/C++ 7 06.04.2014 23:59
Линейный односвязный список Absinth Помощь студентам 4 11.11.2008 20:29
КОЛЬЦЕВОЙ ОДНОСВЯЗНЫЙ СПИСОК __FIRST__ Помощь студентам 0 01.11.2008 17:16
C: односвязный список в файле getfear Помощь студентам 7 04.01.2008 19:26
Кольцевой односвязный список jukk Общие вопросы Delphi 3 22.12.2006 12:10