مشکل در نوشتن Double ended Queues - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل در نوشتن Double ended Queues

0 امتیاز

سلام من کد زیر رو نوشتم ولی درست کار نمی کنه مشکلش چیه ؟! front یک مقدار الکی میده !

#ifndef DEQUE_H
#define DEQUE_H

template <class T>
class Deque
{
public:
    typedef unsigned int size_t;
    Deque():
        size_(0)
    {
        tail_-new Node();
        head_=new Node();
        head_->next=tail_;
        tail_->prev=head_;
    }

    void insertFront(const T& element)
    {
        Node *node=new Node();
        node->element=element;      
        node->next=head_->next;
        node->prev=head_;
        head_->next->prev=node;
        head_->next=node;


    }



    const T& front()
    {
        return head_->prev->element;
    }

    const T& back()
    {
        return tail_->prev->element;
    }

    size_t size()
    {
        return size_;
    }

    bool empty()
    {
        return size_==0 ? true : false;
    }
private:
    size_t size_;
    class Node
    {
    public:
        Node *next;
        Node *prev;
        T element;
    };
    Node *head_;
    Node *tail_;
};

#endif // DEQUE_H

 

سوال شده آذر 19, 1392  بوسیله ی ایرانی (امتیاز 38)   1 4 6
دوباره تگ گذاری شد دی 26, 1392 بوسیله ی BlueBlade
tail_-new Node();

چیه ؟!!

اینو بذار جاش

tail_=new Node();

 

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

تشکر درست شد

اینم کد کاملش :

#ifndef DEQUE_H
#define DEQUE_H

template <class T>
class Deque
{
public:
    typedef unsigned int size_t;
    Deque():
        size_(0)
    {
        tail_=new Node();
        head_=new Node();
        head_->next=tail_;
        tail_->prev=head_;
    }
    ~Deque()
    {
        while(!empty())
        {
            removeFront();
        }
        delete tail_;
        delete head_;
    }

    void insertFront(const T& element)
    {
        Node *node=new Node();
        node->element=element;      
        node->next=head_->next;
        node->prev=head_;
        head_->next->prev=node;
        head_->next=node;
        size_++;
    }
    void insertBack(const T& element)
    {
        Node *node=new Node();
        node->element=element;
        node->next=tail_;
        node->prev=tail_->prev;
        tail_->prev->next=node;
        tail_->prev=node;
        size_++;
    }

    void removeFront()
    {
        if(empty())
            throw "deque is empty";

        Node *temp=head_->next;
        head_->next=temp->next;
        temp->next->prev=head_;
        delete temp;
        size_--;
    }

    void removeBack()
    {
        if(empty())
            throw "deque is empty";

        Node *temp=tail_->prev;
        tail_->prev=temp->prev;
        temp->prev->next=tail_;
        delete temp;
        size_--;
    }

    const T& front()
    {
        return head_->next->element;
    }

    const T& back()
    {
        return tail_->prev->element;
    }

    size_t size()
    {
        return size_;
    }

    bool empty()
    {
        return size_==0 ? true : false;
    }
private:
    size_t size_;
    class Node
    {
    public:
        Node *next;
        Node *prev;
        T element;
    };
    Node *head_;
    Node *tail_;
};

#endif // DEQUE_H

 

پاسخ داده شده آذر 19, 1392 بوسیله ی ایرانی (امتیاز 38)   1 4 6
انتخاب شد آذر 19, 1392 بوسیله ی BlueBlade
...