基本上,我正在使用链表实现一个队列,以尝试模拟一天中在商店排队的人,他们等到他们面前的人完成他们的业务。前几个人很好,但是当我第二次调用 dequeue 时,它会出现段错误。gdb 调试器说错误来自这一行 head=current->next; (其中电流=头部)。
这是我的出队功能:
void BankQueue::dequeue()
{
Node* current=head;
head=current->next;
if(head!=NULL)
{
head->prev=NULL;
}
delete current;
}
这是入队函数(以防入队时我导致内存泄漏):
void BankQueue::enqueue(Customer s)
{
Node* node= new node;
node->data=s;
node->next=NULL;
if(tail==NULL)
{
head=node;
tail=node;
node->prev=NULL;
}
else
{
node->prev=tail;
tail->next=node;;
tail=node;
}
你们可以提供的关于段错误可能发生在哪里的任何帮助都会很棒,在此先感谢。
如有必要,PSI 可以提供更多信息。