No.6ベストアンサー
- 回答日時:
>(1)は2分木のデータ構造を用いて実現したのですが
「2分木」って、もしかして「Binary Tree」かな?
Binary Tree ソートについて
http://www13.plala.or.jp/kmaeda/cs/treesort.htm
だったとしたら、上記ページで説明されてる構造になってる筈だから、構造体に「1つ前に追加したノードへのポインタ」っていうメンバーを増やして、以下のようにすれば良い。
1.グローバル変数に「最も最近に追加したノードへのポインタ」を増やし、NULLで初期化する。
2.1行読み込んで、新しいノードを作成したら「1つ前に追加したノードへのポインタ」のメンバーに「最も最近に追加したノードへのポインタ」を代入する。
3.代入したら「最も最近に追加したノードへのポインタ」に「たった今作成したノードのポインタ」を代入する。
・ソートしてファイル出力する場合
http://www13.plala.or.jp/kmaeda/cs/treesort.htm
の「Print関数」を参照。
・逆順にファイル出力する場合
すべてをツリーに挿入し終わったら「最も最近に追加したノードへのポインタ」から出力を始めて「1つ前に追加したノードへのポインタ」を辿って行き、NULLになったらやめる。
詳細な回答ありがとうございます.ポインタをグローバル変数を用いるのには気づきませんでした.これだと比較的プログラムが複雑にならなそうですね.
No.4
- 回答日時:
念のため、逆順に出力するだけなら、単方向のリスト構造でじゅうぶんです。
双方向を使う必要性はありません。
将来拡張することを考えて,双方向で作ろうと思いました.逆方向へのポインタだけでもいいですが,逆方向をつけるのに比べて順方向をつけるのは容易なので.
No.2
- 回答日時:
そもそも「読み込んだ順と逆順に出力する」のは「読み込んだ順」が分からないと不可能だ. そのことに気づいているんだろうか.
「2分木のデータ構造を用いて実現した」っていうのも「どのようなデータを保持してどのように用いたのか」が書かれていないので, 「そのまま利用して逆順に出力する」ことは「不可能だと思うけどひょっとしたらできるかもしれない」としか言えない. 「2分木のデータ構造」と書いてるけど, 「読み込んですぐに二分探索木に挿入した」んではないかと推測してみる>#1.
(1) と (2) を逆の順序でやると小賢しいといわれて幸せかも.
No.1
- 回答日時:
>もっと上手く実現するアルゴリズムはあるでしょうか?
ソートに対して2分木を採用した理由は何でしょうか?
2分木は親から複数の子に対してのノードをぶら下げていく方法ですから、ソートはかえって難しかったのでは?
(私個人にはツリー構造での実現方法というものは思いつきませんが……中点を最上位のノードとしても、その子のノードはどの位置を示すのかとか考えたくないですし)
双方向リストを使用した方が簡単ですよ。
2分木の既存のプログラムがあったので,それを応用して作ろうと思ったのと,探索などの機能を拡張する場合,2分木のほうが優れているという判断です.
純粋に双方向のポインタを付け加えようと思います.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Excel(エクセル) Excelで漢字人名が勝手に並び変わる(続) 4 2023/03/21 21:28
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
昔Winnyってありましたけど、あ...
-
CPUの考え方を教えてください ...
-
SNMP リンクダウンとノードダ...
-
C#初心者です。HtmlAgilityPack...
-
木のなぞり順をかえるプログラ...
-
グラフ色塗り問題のプログラミ...
-
ツリービューのノードをダブル...
-
2分探索木の高さを求めるプロ...
-
2分木と双方向線形リストを同時...
-
同じタグ名の項目取得
-
東芝のDynabookなのですがアン...
-
タグの有無の判定
-
Dreamweaver CS3 : シングルク...
-
XML、XSLTの適応エラー(IEから...
-
XMLで要素が記述された順番に意...
-
重複するものを消したい
-
XMLのスタイルシートで単独タグ...
-
xsl:param要素をxsl:templateの...
-
xml→htmlへの変換&ページ分割...
-
C#で使用中のファイルに別のフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
昔Winnyってありましたけど、あ...
-
SNMP リンクダウンとノードダ...
-
ルート要素ノードが2個ある場合?
-
同じタグ名の項目取得
-
あるノードリストに、特定の名...
-
ノードとは
-
TreeView の初期表示について
-
ツリービューのノードをダブル...
-
ノード数とは?
-
コンテキストメニュークリック...
-
XML文書の指定した属性値を持つ...
-
C#でtreeviewの指定ノードを選...
-
複数のマックPCによる数値計算...
-
VB6.0ツリービューについて
-
TreeViewの再表示のちらつきを...
-
VB6.0でDOMを使用して...
-
vbsのDOMDocumentで要素のText...
-
TreeViewで複数ノードの選択は...
-
C# TreeView 効率良いノード追...
おすすめ情報