如何在我的程序中突破无限循环
How to break out of an infinite loop in my program
我的程序有问题。我试着把一堆数字放在一个循环链接的队列中,然后再放回堆栈中。程序编译并运行,但在完成所有内容后,我的程序将进入一个空白的无限循环。我假设我是这样的,这是因为函数isQueue.enqueue(temp)
是代码的一部分,因为当我删除它时,我的程序不再进入无限循环。问题是,我看不出我做错了什么,这会让它无限循环。
功能
#include <fstream>
#include <iostream>
#include <cassert>
#include "stack.h"
#include "queuei.h"
void stackToqueue(stack &isStack, queue &isQueue)
{
int temp;
stack newStack;
while (!isStack.isEmpty())
{
temp = isStack.pop();
newStack.push(temp);
}
newStack.displayStack();
isStack = newStack;
isStack.displayStack();
while (!newStack.isEmpty())
{
temp = newStack.pop();
isQueue.enqueue(temp);//stuck in loop
}
isQueue.displayQueue();
while (!isQueue.isEmpty())
{
temp = isQueue.dequeue();
newStack.push(temp);
}
temp = isQueue.dequeue();
newStack.push(temp);
isStack = newStack;
}
queue.cpp
#include "queuei.h"
queue::queue()
{
rear = NULL;
front = NULL;
}
bool queue::isEmpty()
{
if (front == rear)
{
return true;
}
return false;
}
void queue::enqueue(int element)
{
nodes *temp = new nodes;
temp->item = element;
temp->next = NULL;
if (front == NULL)
{
front = temp;
}
else
{
rear->next = temp;
}
rear = temp;
rear->next = front;
}
int queue::dequeue()
{
nodes *tem = new nodes;
tem = front;
if (front == NULL)
{
cout << "nQueue is Emtptyn";
}
else
{
front = front->next;
}
return tem->item;
}
void queue::dequeue(int remove)
{
if (front == NULL)
{
cout << "nQueue is Emtptyn";
}
else
{
front = front->next;
}
}
void queue::displayQueue()
{
nodes *p = new nodes;
p = front;
if (front == NULL)
{
//queue is empty
}
else
{
cout << "F ";
while (p != rear)
{
cout << p->item << " ";
p = p->next;
}
cout << p->item;
cout << " L";
}
}
问题出现在队列::isEmpty()中,因为当存在单个节点并且前后都指向同一节点时,它将返回true。检查它们是否为Null将解决问题。
bool queue::isEmpty()
{
if (front == NULL && rear == NULL)
{
return true;
}
return false;
}
相关文章:
- 过载'operator new'如何导致无限循环?
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 遍历链表时的无限循环
- 循环链表:无限循环
- 比较两个字符串后卡在无限循环中
- 在做一段时间内检查字符的无限循环
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- 可能的无限循环
- 超出 int 的值范围后的无限循环
- 为什么这段代码会导致无限循环?
- 运行无限循环的最小二叉树问题
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 连接线程时的无限循环
- 为什么这种方法会进入无限循环?
- 由于QTextStream的无限循环
- Qt 在另一个线程中无限循环
- 从文件 C++ 读取时的无限循环
- 如何在我的程序中突破无限循环