我正在尝试使用节点为我的队列 (FIFO) 执行深层复制,但出现错误并且不知道是什么原因造成的。当我不复制任何东西时,所有方法都可以正常工作,但是一旦我尝试复制,我就会得到“MyQueue.exe”停止工作。当我什至不使用这些方法时,就会发生这种情况。即使我注释掉整个 do-while 循环,它也会发生。有谁知道这是什么原因造成的?
MyQueue::MyQueue (void)
{
head = NULL;
queueSize = 0;
}
MyQueue::MyQueue (const MyQueue & myq)
{
copyQueue (myq);
}
MyQueue & MyQueue::operator = (const MyQueue & myq)
{
copyQueue (myq);
return *this;
}
void MyQueue::copyQueue (const MyQueue & myq)
{
head = NULL;
queueSize = 0;
Node* temp = myq.head->next;
do
{
enqueue(myq.head->data);
temp = temp->next;
}
while ( temp->next != NULL );
}
MyQueue::~MyQueue (void)
{
}
void MyQueue::enqueue (const int n)
{
Node* temp = tail;
tail = new Node (n);
queueSize++;
if ( empty() )
{
head = tail;
}
else
{
temp->next = tail;
}
}
int MyQueue::dequeue (void)
{
if ( !empty() )
{
int result = head->data;
Node* temporary = head;
head = (temporary->data, temporary->next);
queueSize--;
return result;
}
else
{
std::cout << "No Items to remove" << std::endl;
return NULL;
}
}
int MyQueue::peek (void)
{
return head->data;
}
bool MyQueue::empty (void)
{
if ( head == NULL || queueSize == 0)
{
return true;
}
return false;
}
这就是我的节点被复制的方式
Node & Node::operator = (const Node* & nd)
{
data = nd->data;
next = nd->next;
}