0

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

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

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

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

4

2 回答 2

1

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

很容易制作一个固定大小的链表(例如不使用 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) 替换为链接列表。

于 2012-06-14T05:54:06.063 回答