Code enQueue sai

Chào các bác,
Mình đang tạo 1 queue, các bác xem mình sai chỗ nào mà lại enQueue không đúng? Mình đã tìm mãi rồi mà không biết sai chỗ nào hết, các bác giúp với ạ. Mình cảm ơn

#include<iostream>
using namespace std;

struct LlItem{
    int data;
    LlItem* pNext;
    LlItem(int data){
        this->data = data;
        this->pNext = NULL;
    }
};

class Queue{
    private:
        LlItem* pHead;
        LlItem* pTail;
        
    public:
        Queue(){
            pHead = pTail = NULL;
        }
        bool isEmpty(){
            return pTail == NULL;
        }
        void enQueue(int data){
            LlItem* newNode = new LlItem(data);
            if(pHead == NULL){
                pHead = newNode;
                pTail = newNode;
            }
            else{
              
                pTail->pNext = newNode;
                newNode = pTail;
            }
        }
        void deQueue(){
            if(isEmpty()){
                cout << "Queue is empty";
            }
            else{
                LlItem* temp = pHead;
                pHead = pHead->pNext;
                delete temp;
            }
        }    
        int size(){
            LlItem* temp = pHead;
            int size = 0;
            while(temp){
                temp = temp->pNext;
                size++;
            }
            return size;
        }
        void clear(){
            pHead = pTail = NULL;
        }
        void print(){
            LlItem* temp = pHead;
            while(temp){
              cout << temp->data << " ";
              temp =temp->pNext;
            }
        }
};

int main(){
    Queue* newQueue = new Queue();
    newQueue->enQueue(1);
    newQueue->enQueue(2);
    newQueue->enQueue(3);
    newQueue->enQueue(4);
    newQueue->enQueue(5);
    cout << "newQueue Element: ";
    cout <<"\nSize: " << newQueue->size() << "\n";
    newQueue->print();

}

void enQueue(int data)
{
    LlItem* newNode = new LlItem(data);
        if(pHead == NULL){
            pHead = newNode;
            pTail = newNode;
        }
        else{
             pTail->pNext = newNode;
             pTail = newNode; // sửa lại như thế này
       }
}
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?