から




専門/H18/04

正解 Edit

2

実行順序 Edit

1 イ−ウ−オ−カ Edit

newcell->prev = p;
p->next = newcell;
p->next->next = newcell;
p->next->prev = newcell;

2 イ−ア−カ−ウ Edit

newcell->prev = p;
newcell->next = p->next;
p->next->prev = newcell;
p->next = newcell;

3 カ−ウ−ア−イ Edit

p->next->prev = newcell;
p->next = newcell;
newcell->next = p->next;
newcell->prev = p;

4 ア−イ−ウ−カ Edit

newcell->next = p->next;
newcell->prev = p;
p->next = newcell;
p->next->prev = newcell;

5 オ−ウ−イ−エ Edit

p->next->next = newcell;
p->next = newcell;
newcell->prev = p;
p->prev = newcell;

整理 Edit

  • 現状
    p->prevpp->next
    p->prev->prevp->prev->nextp->prevp->nextp->next->prevp->next->next
    p->prev->prevpp->prevp->nextpp->next->next
  • newcellの追加
    p->prevpnewcellp->next
    p->prev->prevp->prev->nextp->prevp->nextnewcell->prevnewcell->nextp->next->prevp->next->next
    p->prev->prevpp->prevp->next??????pp->next->next
    赤文字の箇所のポインタを修正する必要がある。
    newcell->prev = p;
    newcell->next = p->next;
    p->next->prev = newcell;
    p->next = newcell;
  • newcellの追加(ポインタ修正)
    p->prevpnewcellp->next
    p->prev->prevp->prev->nextp->prevp->nextnewcell->prevnewcell->nextp->next->prevp->next->next
    p->prev->prevpp->prevnewcellpp->nextnewcellp->next->next

ア−イ−ウ−カがNGの理由 Edit

一見、イ−ア−カ−ウと同じように見えるが、ウ−カの順序が逆であるため

[ウ] p->next = newcell;
[カ] p->next->prev = newcell;
        ↓
[カ] newcell->prev = newcell;

となるため。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 下位頁新規  一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-22 Mon 23:18:58 JST (2923d)