我已经编写了用于排队、出列元素和显示元素的函数。如果我运行代码,我能够正确地推送和弹出元素。但是当我选择显示队列的值时,它给了我一个 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,而是由垃圾而不是空值初始化。