• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:双方向リスト)

双方向リストを使った昇順の数値入力プログラムの作成方法

このQ&Aのポイント
  • 双方向リストを使って昇順に数値が入力されるプログラムを作成する方法について質問です。
  • 質問のプログラムを実行すると、2個目の数値入力時に停止してしまう問題が発生しています。
  • 解決策を教えていただけると助かります。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

初期状態で > np = numtable->right; (= NULL)ですから >np->left = tmp; NUL->left=tmp で不具合発生、となります。 nqが「最後」の場合、np= NULLになりますから if ( nq->right != NULL ) { np->left = tmp; } とするのがよいでしょう。 あと、このやりかただと、最初に確保された構造体がなんの値も不定の値を持ったゴミ要素として最後まで残ります。 > numtable = (struct numbers *)malloc(sizeof(struct numbers)); をnumtable=NULL ; として、 >np = numtable->right; >nq = numtable; >while ( np != NULL) { の前に if (numtable==NULL) { numtable = tmp; continue; } とでも入れるのがいいのではないでしょうか。

tksmsysh
質問者

お礼

ご回答ありがとうございます。 tmp->left = nq; nq->right = tmp; tmp->right = np; np->left = tmp; を tmp->left = nq; nq->right = tmp; tmp->right = np; if ( nq->right != NULL) np->left = tmp; に変更しましたが、結果は変わりませんでした…。

tksmsysh
質問者

補足

すみません、解決しました。 貴重なアドバイス、本当にありがとうございました。

関連するQ&A