基本上,我使用的是鏈表,試圖模擬人在商店在一天的過程中排隊執行隊列中,他們等到的人在他們面前結束自己的業務。前幾個人經歷的很好,但是當我到達第二次出隊時,它會默認我。 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;
}
任何幫助你們可以爲提供到段落可能發生的地方將是驚人的,在此先感謝。如果必要的話
P.S.I可以提供更多的信息。
你在做任何事情的析構函數的任何機會'Node'好笑嗎?我唯一看到的是,在'dequeue'函數(這裏:'head = current-> next;')中使用它之前,你不檢查'head'('current')是否爲'NULL'。如果在空隊列中出隊,這將會出現段錯誤。 **編輯:**啊,我認爲這是問題,因爲'dequeue'不會重置'enqueue'使用的'tail'指針。 – paddy 2013-03-26 02:14:51