1

プログラミング課題の一環として、リンク リストをテキスト ファイルで管理する必要があります。リンク リストのデータ構造にはかなり慣れていますが、C++ のファイルにはあま​​り向いていません。誰かがそれにアプローチする方法のアイデアや概要を教えてくれますか? リンクされたリストを追加または削除したり、リンクされたリスト内のノードを追加または削除したり、1 つのリンクされたリストで削除されたスペースを再利用したりできる必要があります。各リストには数値(整数)があり、すべてのノードは同じサイズで、整数が含まれています。

私の考えは、

1) 番号付きのファイルを維持する (リンクされたリスト番号を含む)

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 番目の場所に関連付けられた場所があることを示します。

2)別のファイルを開き、このようにリンクされたリストを維持します

data next_offset
data next_offset
data NULL

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

C ++で行うために、知って学ぶ必要がある関数は何ですか。時間は非常に少なく、基本的なレベルの機能と考えてコーディングできます。お知らせ下さい。前もって感謝します

4

2 に答える 2

0

1つの解決策は、各リストに独自のファイルを含めることです。番号はディスク上のファイル名になります。ファイル内の最初の行は常にヘッドノードです。各行は2個のデータになります。次のノードのファイル内の行が後に続くノードデータ。これにより、削除された空のスペースを再利用できます。(次のノード行の-1は、リストの最後になります。例:

1.txt:

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

したがって、このリンクリストは18-> 32->5->4になります。

于 2012-04-06T00:53:43.170 に答える
0

どの関数を使用するかについては、 http ://www.gnu.org/software/libc/manual/html_node/I_002fO-on-Streams.html#I_002fO-on-Streams を参照してください。 このセクションを読むには、 15 分で基本をカバーします。

于 2012-04-06T00:42:52.773 に答える