为什么下面的使用链表实现线性队列的代码返回垃圾值然后崩溃

Why is the following code of implementing Linear Queue using Linked List returning a garbage value and then crashing?

本文关键字:返回 代码 崩溃 然后 队列 线性 实现 链表 为什么      更新时间:2023-10-16

我已经编写了用于排队、出列元素和显示元素的函数。如果我运行代码,我能够正确地推送和弹出元素。但是当我选择显示队列的值时,它给了我一个 10 位的值,然后编译器崩溃了。我的显示函数逻辑建议我们应该从指针前端开始,然后遍历直到队列的末尾,直到达到 NULL。请帮忙。

注意:更新代码以便每个人更好地了解它。

class Node
{
    int data;
    Node *next;
public:
    Node(int num)
    {
        data=num;
        next=NULL;
    }
    friend class Queue;
};
class Queue
{
    Node *rear, *front;
public:
    List()
    {
        front=0;
        rear=0;
    }
    void enqueue(int num)
    {
        Node *new_node=new Node(num);
        if(front==NULL)
            front=rear=new_node;
        else
        {
            rear->next=new_node;
            rear=new_node;
        }
    }
    void dequeue()
    {
        if(front==NULL)
            cout << "Queue is Empty!";
        else
        {
            Node *temp=front;
            front=front->next;
            delete temp;
        }
    }
    void display()
    {
        Node *temp=front;
        while(temp!=NULL)
        {
            cout << temp->data << " ";
            temp=temp->next;
        }
    }
};
main()
{
    Queue q;
    int ch, num;
    do
    {
        cout << "n----------n1. Enqueuen2. Dequeuen3. Displayn4. Exitn----------n";
        cin >> ch;
        switch(ch)
        {
        case 1:
            {
                cout << "nEnter the number to push:" << endl;
                cin >> num;
                q.enqueue(num);
                break;
            }
        case 2:
            {
                q.dequeue();
                break;
            }
        case 3:
            {
                q.display();
                break;
            }
        }
    }
    while(ch!=4);
}

您的代码示例不完整,无法明确说明。但我的猜测是,您不会将下一个成员初始化为 nullptr,而是由垃圾而不是空值初始化。