掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23861

ポインタのつなぎ換え
投稿者---あきき(2005/10/26 23:55:05)


以下のコーディングは当サイトの解答例15-5の add_list関数の一部です。struct list *pとstruct list *new_pの違いも間違っているような気がします。*pはリストデータを降順にソートするために使用、*new_pはリストデータの編集のために使用、と私は理解しています。しかし、最後のポインタのつなぎ換えで何をしているのか容易に理解できないので、コメントをつけてもらえないでしょうか
        /* キーのサーチ */
        for ( p = head;  p->next != NULL; p = p->next )
                if ( key > p->next->key ) break;

        /* ポインタのつなぎ換え */
        new_p->next = p->next;
        p->next = new_p;
        return head;


それとなんですが、*del_list関数の*pはdeleteするために使用、また、*old_pはdelete後の編集のために使用しているのでしょうか


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ポインタのつなぎ換え 23862 まきじ 2005/10/27 00:19:49


No.23862

Re:ポインタのつなぎ換え
投稿者---まきじ(2005/10/27 00:19:49)


>pはリストデータを降順にソートするために使用

降順にソートの為というより、リストを辿るための変数。
リストは降順にソートされている為、追加するノードの key より
小さいのが見つかれば、追加する前方のノードを
p が指している事になります。(「前方」がhead 方向)

>*new_pはリストデータの編集のために使用、と私は理解しています。

編集というより、追加するノードへのポインタです。

>最後のポインタのつなぎ換えで何をしているのか容易に理解できない

p は追加するノードの前方のノードを指していて
追加するノードの後方には、p が指すノードの
後方のノードになるので new_p->next = p->next となり
p が指すノードの後方は、追加するノードになるので
p->next = new_p となる。

>それとなんですが、*del_list関数の*pはdeleteするために使用

リストを辿るための変数。

>*old_pはdelete後の編集のために使用しているのでしょうか

old_p は削除されるノードの前方のノードを指している。


この投稿にコメントする

削除パスワード

No.23868

Re:ポインタのつなぎ換え
投稿者---あきき(2005/10/28 00:11:45)


となると、コメントはこんなものでいいですね。
        /* ポインタのつなぎ換え */
        new_p->next = p->next;//追加ノードとその直後ノードのポインタのつなぎ換え
        p->next = new_p;//追加ノードとその直前のノードのポインタのつなぎ換え
        return head;





この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧