プロが教えるわが家の防犯対策術!

上からも下からも取り出すことが出来るキューDequeの
なかの関数pop_rear()が、上手く機能しません。
何処か間違いがあるのでしょうか?
通常のキューで上から取り出すpop_front()は、機能します。pop_front()は、下記の中のbackPtrを frontPtr
に変えただけです。
宜しくお願いします。

void dequeue::pop_rear()
throw (DequeueException)
{
if (isEmpty())
throw DequeueException(
"DequeueException: empty , cannot pop from rear");
else
{ // queue is not empty; remove rear
DequeueNode *tempPtr = backPtr;
if (frontPtr == backPtr) // special case?
{ // yes, one node in queue
frontPtr = NULL;
backPtr = NULL;
}
else
{
backPtr = backPtr->prev;
tempPtr->next = NULL;
delete tempPtr;
}
}

}

A 回答 (1件)

> else


> {
>  backPtr = backPtr->prev;
>  tempPtr->next = NULL;
>  delete tempPtr;
> }

ここの tempPtr->next = NULL; ですが、
多分ここが原因だと思います。

ここを
if(tempPtr->prev != NULL) (tempPtr->prev)->next = NULL;
にしてみるとうまく動かないでしょうか?

全てのソースを見たわけでもないので自信ないですが、最近
よく似た関数を組んだ所なので何となくそういう気がします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!