C/C++ Урок 31. Пара вспомогательных методов для списка
Сейчас мы с вами напишем пару вспомогательных методов для нашего класса списка.
Внесите в заголовочный файл класса списка объявления наших методов:
//Класс списка.
class CList
{
public:
// Не пустой ли наш список?
bool IsEmpty();
// Предыдущий элемент в списке.
CData * GetPrev(CData * p);
...
Первый метод короткий - с него и начнем. Он просто отвечает на вопрос, не пуст ли наш список. Вот его код:
bool CList::IsEmpty()
{
return m_pFirst==NULL;
}
Второй метод возвращет по указателю на передаваемый в параметре элемент списка предыдущий для него (такой метод может оказаться весьма полезным, так как наш класс CData содержит только указатель на следующий элемент, а на предыдущий - нет). Вот его код:
CData * CList::GetPrev(CData *p)
{
// Если предыдущего элемента списка нет
// (т. е. наш элемент совпадает с первым)
// то возвращем NULL.
if(p==m_pFirst)
return NULL;
// Если предыдущий элемент есть.
CData * pCurr = m_pFirst;
do{
// Если для очередного элемента в списке
// следующий для него элемент есть
// передаваемый нами в параметре,
if(pCurr->m_pNext==p){
// то и возвращаем этот очередной элемент.
return pCurr;
}
// Переводим pCurr на следующий элемент в списке.
}while((pCurr = pCurr->m_pNext)!=NULL);
return NULL;
}
Этими методами мы воспользуемся на следующих уроках.
|