Cで二重にリンクされたdequeリスト(バックセンチネルのみ)を元に戻すのに問題があります。ポインターを切り替えてアプローチしています。これまでのコードは次のとおりです。
/* Reverse the deque
param: q pointer to the deque
pre: q is not null and q is not empty
post: the deque is reversed
*/
/* reverseCirListDeque */
void reverseCirListDeque(struct cirListDeque *q)
{
struct DLink *back = q->backSentinel;
struct DLink *second = q->backSentinel->prev;
struct DLink *third = q->backSentinel->next;
while (second != q->backSentinel->next){
back->next = second;
third = back->prev;
back->next->prev = back;
back = second;
second = third;
}
}
しかし、機能していないようです。次のような両端キューを使用してテストしています。1、2、3出力は次のとおりです。3このプロセスは、数値の実際の値を台無しにしているようです。すなわち。2は2.90085e-309になります...ポインタの切り替えがめちゃくちゃだと思いますが、問題が見つかりません。そして、それは私のコードが正しいという意味ではありませんが、正常にコンパイルされます。