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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 02:08   #1
InKo1
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 18
По умолчанию Связный список

Объясните пожалуйста, почему не работает этот код, ошибка заключается в функции pushFront, но я не могу понять в чём же проблема.
Код:
#include<iostream>
using namespace std;

class List
    {
        struct Member
            {
                int item;
                struct Member* pNext;
                struct Member* pBack;
            };
        private:
            int Items;
            Member* pHead; // Начало списка
            Member* pTail; // Конец списка
        public:
            List();
            Member* front() const { return pHead; } // Возвращает ссылку на первый эллемент списка
            void out() const; // Выводит все эллементы на экран
            bool pushFront(int Data); // Добавляет эллемент в начало списка
            bool pushBack(int Data); // Добавляет элемент в конец списка
            bool popFront(); // Удаляет первый эллемент списка
            bool popBack(); // Удаляет последний эллемент списка
            bool isEmpty() const; // Возращает true если список пуст
    };

int main()
    {
        List set;
        set.pushFront(1);
        return 0;
    }

List::List()
    {
        Items = 0;
        pHead = NULL;
        pTail = NULL;
    }
void List::out() const
    {
        Member* pOut = new Member;
        pOut = pTail;
        while(pOut)
            {
                cout << pOut -> item << endl;
                pOut = pOut -> pBack;
            }
    };
bool List::isEmpty() const
    {
        if(Items == 0)
            return true;
        else
            return false;
    }
bool List::popFront()
    {
        if(isEmpty())
            return false;
        Items--;
        Member* buf = pHead;
        pHead = pHead -> pNext;
        delete buf;
        if(isEmpty())
            {
                pTail = NULL;
                pHead = NULL;
            }
        return true;
    }
bool List::popBack()
    {
        if(isEmpty())
            return false;
        Items--;
        Member* buf = pTail;
        pTail = pTail -> pBack;
        pTail -> pNext = NULL;
        delete buf;
        if(isEmpty())
            {
                pTail = NULL;
                pHead = NULL;
            }
        return true;
    }
bool List::pushFront(int Data)
    {
        Member* pNew = new Member;
        if(pNew == NULL)
            return false;
        pNew -> item = Data;
        pNew -> pNext = pHead;
        pNew -> pBack = NULL;
        pHead -> pBack = pNew;
        pHead = pNew;
        Items++;
        if(Items == 1)
            pTail == pHead;
        return true;
    }
bool List::pushBack(int Data)
    {
        Member* pNew = new Member;
        if(pNew == NULL)
            return false;
        pNew -> item = Data;
        pNew -> pNext = NULL;
        pNew -> pBack = pTail;
        Items++;
        if(pHead == NULL)
            pHead = pNew;
        else
            pTail -> pNext = pNew;
        pTail = pNew;
        return true;
    }
InKo1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связный список GripEnemy Visual C++ 2 08.12.2011 16:19
Связный список batman01 Общие вопросы C/C++ 1 15.10.2011 01:31
связный список xeops Visual C++ 6 30.09.2011 09:39
Связный список С++ Шёпот Общие вопросы C/C++ 2 01.04.2011 22:56
Связный список векторов Kekcuk Общие вопросы C/C++ 0 13.12.2010 21:00