アプリ版:「スタンプのみでお礼する」機能のリリースについて

自分には、難しい内容なので、色々教えていただけると嬉しいです。

リスト構造で、データの入れ替え・ポインタの付け替えを行っているのですが、どこのサイトを見てもどれが、参考になるのか分かりませんでした。

例えば、宣言でgFront→a1→a2→a3→a4→a5→NULLのすでに連結されたリストがあります。
先頭には、ダミー(gFront)のセルがあり、そこからたどって入れ替えていくというものです。
a1からa5の中には、数字が入っているものとします。

a2とa5の入れ替えを行うと仮定して話します。
そして、a2をpreとして、a5をnewとして、preの一つ前をprepreとし、newの1つ前をprenewとして、ひとつ前のnextを調べてポインタの付け替えを行います。

4か所のポインタの付け替え後の結果を、gFront→a1→a5→a3→a4→a2→NULLとしたいです。
swapを使ったリストの中身入れ替えではなく、ポインタの付け替えでリスト自体の入れ替えを行いたいと考えています。

この付け替えの部分がいまいちプログラムの書き方と言いますか、よく理解できていないので、教えていただけないでしょうか?
文章だけでは、分かりにくいところが多々あるかとは思いますが、宜しくお願いいたします。

A 回答 (11件中11~11件)

線形連結リストの基本的な操作なので、リストの仕組みを理解していれば、簡単ですよ。


newとかprenewとか難しく考えすぎているみたい。
前のノードがpre、後のノードがnextとすると
a1->next=a5;
a5->pre=a1;
a5->next=a3;
a2->pre=a4;
a2->next=NULL;
一般化する場合は、現状リンクしているノードを覚えておくことを忘れずに。

この回答への補足

p1というポインタを使ってたどっていくので、もっと複雑になりませんか?

入れ替えを複数回行いたいので、
a1->next=a5;
のように固定して書けません・・・

補足日時:2009/07/10 23:26
    • good
    • 0

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