0

我想知道如何在 C 中创建单个链表,其中每个节点都有:

  • 任意长度的字符串。
  • 整数列表(要存储的整数总数在节点之间会有所不同,所以我不能使用整数数组)。

提前致谢。

4

2 回答 2

1

我不会为您编写代码,但这里有一些步骤可以帮助您入门。这是一种可能的方法;考虑到您的实际需求,还有其他可能会更好。

首先,确定您的数据结构。你需要两个。第一个是整数链表。第二个是包含字符串和列表的链表。以下是后者中的节点可能的样子:

typedef struct node {
    char* someStr;
    LIST* integerList;
    struct node* next;
} NODE;

然后,拥有一个创建整数链表的函数。有另一个函数为字符串分配内存并返回一个char*.

有第三个函数,它将s 的链表NODE、字符串和 s的链表作为参数int。这个函数将一个新的添加NODE到列表中,设置指向链表int和字符串的指针。

至少从这个开始。如果您在任何功能上遇到困难,您可以询问有关它们的具体问题。但是你不能只是发布问题并期望有人为你编写代码,而不说明你尝试了什么以及你卡在哪里。

于 2013-08-26T00:06:33.317 回答
0

据我了解:

整数列表(要存储的整数总数在节点之间会有所不同,所以我不能使用整数数组)。

看来你想要一个数字的动态数组,你可以使用This CCAN Module(它只是一个标题,只需删除 config.h 包含,你应该很高兴)

注意:数字列表似乎是个坏主意,因此动态数组可能是最有效的方法。

NB2:编​​写自己的动态数组并不难,只要看看它的算法

最简单的用法是这样的:

#include "darray.h"

struct node {
    char *string;
    darray(int) numbers;
};

inline void push_number(struct node *node, int number) {
    darray_push(node->numbers, number);
}
于 2013-08-26T00:06:52.333 回答