Lỗi truy cập p->next trong push() của Queue

http://codepad.org/x26zgyZK.

void queue::push(int n)
{
    node *temp = new node;
    node *p = new node;
    temp->data = n;
    if (empty())
    {
        top = temp;
    }
    else
    {
        p = top;
        // Exception thrown: read access violation
        // **p** was 0xCDCDCDCD
        while (p->next != NULL)
        {
            p = p->next;
        }
        p->next = temp;
    }
}

hàm mình viết có gì sai. Với lỗi trên nghĩa là gì. Xin cám ơn.

p->next=temp;
delete temp;

Bạn trỏ vào xong lại delete này :smiley:

node *oldtop = new node;
oldtop = top;
top->next = top;
delete oldtop;

Thế thì hòa cả làng.

1 Like

con trỏ p chưa được gán cái gì cả. 0xCDCDCDCD là giá trị mặc định của con trỏ ở mode debug và được đảm bảo là không bao giờ là giá trị hợp lệ.
Trong code có khá nhiều dòng thế này, cẩn thận xem lại:

p = p->next;
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?