为什么下面的使用链表实现线性队列的代码返回垃圾值然后崩溃
Why is the following code of implementing Linear Queue using Linked List returning a garbage value and then crashing?
我已经编写了用于排队、出列元素和显示元素的函数。如果我运行代码,我能够正确地推送和弹出元素。但是当我选择显示队列的值时,它给了我一个 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,而是由垃圾而不是空值初始化。
相关文章:
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 为什么C++程序在太大时返回代码而不是答案?
- bash脚本在使用popen()时不返回代码以调用C ++程序
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- NMAKE:致命错误 U1077:cl.exe 和 nmake.exe 返回代码'0x2'
- DoModal 主应用程序随机返回 -1 代码
- C++线程中调用 std::terminate 时程序返回代码
- IMMDevice::激活缺少接口的返回代码
- 退出应用并在 MFC 中返回代码
- 什么是线程锁返回代码值
- 引发异常与返回代码
- 为什么我的shell只检测0-255之间的返回代码
- waitpid/wexitstatus 返回 0 而不是正确的返回代码
- linux下的Boost Semaphores和EINTR返回代码
- 从std::thread获取返回代码
- 从本地类的 C++ 析构函数访问返回代码
- DLL 注册返回代码0x80029c4a
- 定义D3DERR_INVALIDCALL(D3D11CreateDevice的返回代码)的位置
- Windows 错误消息返回代码而不是消息
- 如何在DdeCallback函数中实现返回代码