0

テキストファイルを読み取ってメモリに保存する小さなプログラムを作成しています。次に、ユーザーはファイルに別の行を追加したり、行を置き換えたり、特定の行に別の単語を追加したりできます...

最後に、ユーザーはコンテンツをメモリからファイルに保存できます。Python で同じプログラムを実行し、多次元配列を使用したため、配列の各要素は単語の配列でした。これにより、特定の行の特定の単語にアクセスして、別のものに置き換えることが非常に簡単になりました

今、私はCで同じことをしようとしていますが、混乱しています。少しいじった後、私はcharの単語を持つ構造を持つことにもっと傾いています[]。このようにして、NextNode を前の行から次の行に逆参照するだけで、特定の行を削除できます。

2 つの質問があります: 1. これは私の目標を達成するための良い方法ですか? 2. FIXED サイズのリンク リストを作成するにはどうすればよいですか (たとえば、malloc を使用しません)。たとえば、最大 10 行にしたい場合、10 個のノードを作成して malloc を回避するにはどうすればよいでしょうか?

4

2 に答える 2

1

まず第一に、なぜ固定サイズが必要なのですか?

FIXEDサイズのリンクリストを簡単に作成できます(たとえば、mallocを使用しません)。構造の配列として呼び出されます:)

構造を作成できる場合は、「ノード」と言います。

#define MAXLEN   100
typedef struct node
{
  int nLinenum;
  char Data[MAXLEN];

};

あなたは書ける:

node static_linked_list[10];

ただし、特定のノードを削除するには、少し複雑なコードを記述する必要があります。リンクされたリストからノードを削除する(mallocを使用)と比較すると、単純ではありません。

于 2012-06-14T05:35:28.120 に答える
0

以下は最も簡単な方法です: (構造定義のみをリストします)。

    struct word {
        char m_word[MAX_WORD_LENGTH];
    };

    struct line {
        struct word[MAX_WORDS_PER_LINE];
    };

    struct _node {
        struct line m_line;
        struct _node *next;
    };

固定サイズの DS を使用しても、目的を達成することはできません。後で、配列 (m_word & line->word) も linklist に置き換える必要があります。

于 2012-06-14T05:54:06.063 に答える