在 C 中存储单词和行列表的最佳数据类型是什么



我正在制作一个小程序,用于读取文本文件并将其存储在内存中。然后,它允许用户在文件中添加另一行,替换一行,在特定行添加另一个单词等......

最后,用户可以将内存中的内容保存回文件。我在Python中做了同样的程序,并使用了一个多维数组,所以数组中的每个元素都是一个单词数组。这使得访问特定行的特定单词以替换为其他内容变得非常容易

现在我正在尝试用 C 做同样的事情并感到困惑。经过一番混乱之后,我更倾向于拥有一个带有字符单词的结构[]。这样,我可以通过取消引用 NextNode 从上一个到下一个来删除特定行。

我有两个问题:1. 这是实现目标的好方法吗?2. 如何制作固定大小的链表(例如不使用malloc)。例如,如果我想最多有 10 行,我如何只创建 10 个节点并避免 malloc?

首先,为什么要固定大小?

很容易

制作一个固定大小的链表(例如不使用malloc),它被称为结构:)数组

如果可以创建结构,请说"节点":

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

你可以写:

node static_linked_list[10];

但是您需要编写一些复杂的代码来删除特定节点。与从链表中删除节点(使用 malloc)相比,这并不简单。

以下是最简单的方法:(仅列出结构定义)。

    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和行>单词)替换为链接列表。

相关内容

  • 没有找到相关文章

最新更新