2012-04-06 10 views
1

プログラミング割り当ての一環として、テキストファイルにリンクリストを維持する必要があります。私はLinked Listのデータ構造にはかなり便利ですが、C++のファイルではあまり役に立ちません。ある人が私にそれに近づく方法のアイデアや概要を教えてくれますか?私はリンクリストを追加または削除することができ、リンクリストのノードを追加または削除することができ、リンクされたリストの1つで削除されたスペースを再利用できるはずです。各リストは数字(整数)を持ち、すべてのノードは同じサイズで整数を含みます。ファイル内のリンクリストの更新

私の考えは-1がtermiator指標である

0 - NULL 
1 - head_offset for_linked_list_num 1 
0 - NULL 
1 - head_offset_for_linked_list_num 3 
1 - head_offset_for_linked_list_num 3 
1 - head_offset_for_linked_list_num 3 

など )リンクリスト番号が含まれている番号のファイルを(維持する)、

1になり、位置の1が示しますi番目の場所は、別のファイルを開いて、この

data next_offset 
data next_offset 
data NULL 
のようなリンクリストを維持する)こと

2に関連付けられている場所があります

このようにすると、リンクされたリストを追跡し、配列を効率的に追加/削除/表示できます。

私が知り、学ぶべき機能は何ですか?私は時間が非常に少なく、基本的なレベルの機能と考えることができます。お知らせ下さい。事前に感謝します

+0

1つのリンクリストまたは複数のリストを維持する必要がありますか? – Wizetux

+0

複数のリストですが、ノード間で交換できると思います.Btw、10のうちどの位割当てを評価しますか? – howtechstuffworks

+0

本当にばかげた質問かもしれませんが、1行に1つの要素を保存するのはなぜですか?要素を削除して、行を削除してください。要素を挿入してください、行を挿入します。 – bitmask

答えて

0

解決方法1つの解決策は、それ自身のファイルの各リストを持つことができます。番号はディスク上のファイル名になります。ファイルの内部では、最初の行は常に先頭ノードです。各行は2つのデータピースになります。ノードデータの次に、次のノードのファイル内の行が続きます。これにより、削除された空のスペースを再利用することができます。 (次のノードラインの-1がリストの最後であろう。例えば:

1.TXT:

(data) (next node lines number) 
18  2 
32  4 
4  -1 
5  3 

したがって、このリンクリストは18であろう - > 32 - > 5 - > 4

+0

これは今私が行く予定のデザインだと思います。お知らせします。ありがとう。 Btw、あなたは私に特定の線をたどる方法の例を教えてもらえますか? – howtechstuffworks

+0

私はそれが多くの反復を取ると思います。 – howtechstuffworks

+1

繰り返しを減らし、ファイル全体を一度にメモリに読み込まないようにするには、ファイルをバイナリ形式で読み書きして、ファイルを場所に数キロくらい見ることができます。最後の値は、行番号ではなく次の要素のシーク位置になります。データがすべて均一なサイズ(Integer)であることから、バイナリファイルフォーマットを叫ぶだけで、それぞれのバイト数がわかるからです。 IMO – Wizetux

関連する問題