我有一个名为arrayOfElements的struts数组,每个元素都是一个名为Element
的结构typedef struct {
void* data;
} Element;
数据是一个无效指针,因为我不知道将会存储什么类型的变量
我已经将malloc这个数组有4个元素(这是通过用户输入完成的,但我已经用硬编码4来解决这个问题)
Element* arrayOfElements;
arrayOfElements= malloc(4 * sizeof(Element));
到目前为止,我可以在arrayOfElements
中存储字符串和整数Store Int
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
+---+ +---+---+----+ +---+---+----+
| | -------------------> | | | |
+---+ +---+---+----+ +---+---+----+
| | -> | | | |
+---+ +---+---+----+ +---+---+----+
| | -------------------> | | | |
+---+ +---+---+----+
问题/ TL; DR 我的问题是如何使void ** ElementArray(在链表中)指向arrayOfElements。
答案 0 :(得分:0)
如果我理解你的问题是正确的,就不需要双指针。只是做:
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指针,但为了简单起见,我省略了它。