OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

アルゴリズム

  • すぐに回答を!
  • 質問No.112358
  • 閲覧数82
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 7% (1/14)

アルゴリズムについて勉強しているのですが、この問題が解けませんでした。

リンクによるリストに対して、ルーチンmovenexttofront(struct node *t)を実現せよ。
ここで、この手続きはtがさす接点の次の接点をリストの先頭に移すものである。

この問題を解ける人、ぜひ教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル6

ベストアンサー率 50% (5/10)

リスト構造でのノードの移動ってやつですね。
まずリスト構造について勉強してください。

それだけでは不親切なので、

たとえばnode構造体が次のような形だとしたら、
struct node {
int idata; /* ノードが持つデータ */
struct node *next; /* 次のノードへのポインタ */
}

movenexttofrontは次のようになります。
リスト構造の先頭ノードへのポインタが struct node *frontとグローバル変数で宣言されているとして、
void movenexttofront(struct node *t)
{
struct node *f; /* 先頭に移動するノードへのポインタ宣言 */

f = t->next; /* 先頭に移動するノードへのポインタを保存 */
t->next = f->next; /* *tの次のノードを*fの次のノードに変更。これでfはリストから削除される。 */
f->next = front; /* *fの次のノードを現在の先頭ノードに変更。これでfがリストの先頭ノードとなる。*/
front = f; /* 先頭のノードとなった*fへのポインタをfrontに保存.
}

これで解らなければデータ構造をじっくり勉強してください。大体のCの参考書には載っていると思います。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

なんらかの外部変数が先頭の節点のポインタを保持しているとする なら、ポインタのつけかえだけですね。 つけかえの手順はいろいろありますが、例をあげるなら、 1. tの次の節点のポインタをどこかに保存 ... tmp とする 2. tの次の次の節点がtの次となるように変更 3. 先頭の節点が tmp の次となるように変更 4. tmp が先頭になるように外部変数を変更 となります。 こ ...続きを読む
なんらかの外部変数が先頭の節点のポインタを保持しているとする
なら、ポインタのつけかえだけですね。

つけかえの手順はいろいろありますが、例をあげるなら、
1. tの次の節点のポインタをどこかに保存 ... tmp とする
2. tの次の次の節点がtの次となるように変更
3. 先頭の節点が tmp の次となるように変更
4. tmp が先頭になるように外部変数を変更
となります。

これだけ見て、なんのことやらさっぱりなら、かなりわかっていな
いと自覚して勉強してください。


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ