gpt4 book ai didi

c - 在链表中存储结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:20 25 4
gpt4 key购买 nike

我有一个名为 arrayOfElements 的 strut 数组,每个元素都是一个名为 Element 的结构

typedef struct {
void* data;
} Element;

数据是一个空指针,因为我事先不知道将存储什么类型的变量

我已经 malloc'd 这个数组有 4 个元素(这是通过用户输入完成的,但我为这个问题硬编码了 4 个)

Element* arrayOfElements;
arrayOfElements= malloc(4 * sizeof(Element));

现在我可以在 arrayOfElements 中存储字符串和整数

存储整数

arrayOfElements[0].data = malloc( sizeof(int) );
int *ptr = arrayOfElements[0].data;
*ptr = 65;

存储字符串

arrayOfElements[0].data = malloc( strlen(str) + 1 );
strcpy( arrayOfElements[0].data, str );

一切正常。我的问题是如何制作链接列表并使每个元素存储 arrayOfElements 的实例

到目前为止我的链表是

typedef struct LinkedListNode {
void** ElementArray;
struct LinkedListNode* next;
} LinkedListNode;

typedef struct {
LinkedListNode* head;
} LinkedList;

所以 void** ElementArray 将指向每个 arrayOfElements

void insert(LinkedList* head, Element inArrayOfElements)
{
LinkedListNode insertNode;

/* Points ElementArray to inArrayOfElements */
HOW DO I DO THIS AS ElementArray is a void**

/* Points next to the head */
(*insertNode).next = head;

/* Re-points head to new head of Linked List */
head = insertNode;
}

我的目标是拥有这样的东西

LINKEDLIST
+---+ +---+---+----+
| | -> | | | | arrayofElements
+---+ +---+---+----+ +---+---+----+
| | -------------------> | | | |
+---+ +---+---+----+ +---+---+----+
| | -> | | | |
+---+ +---+---+----+ +---+---+----+
| | -------------------> | | | |
+---+ +---+---+----+

问题/长话短说;DR我的问题是如何使 void** ElementArray(在链表中)指向 arrayOfElements。

最佳答案

如果我理解你的问题是正确的,就不需要双指针。只是做:

typedef struct LinkedListNode {
Element* data;
struct LinkedListNode* next;
} LinkedListNode;


LinkedListNode* insert(LinkedListNode* head, Element* inArrayOfElements)
{
LinkedListNode* insertNode = malloc(sizeof(LinkedListNode));

insertNode->next = head;
insertNode->data = inArrayOfElements;
return insertNode;
}

像这样使用它:

head = insert(head, someArrayOfElements);

注意:真正的代码应该检查 NULL 指针,但为了简单起见我省略了它。

关于c - 在链表中存储结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com