在另一个结构中分配结构的内存
allocate memory of struct within another structure
我正在实施 BST,需要您的建议。该代码有 2 个结构。我需要在项目结构中分配 link 结构。我该怎么做?我需要分配两个 item->link->left & item->link->right
吗?
请举例说明?
struct link;
struct link
{
struct link *left;
struct link *right;
};
struct item
{
struct link link;
uint8_t c;
};
在某处插入函数
item *temp = NULL;
// 我将如何分配内存 ??
首先,你必须为item
分配内存。
item *temp = NULL;
temp = malloc(sizeof(item)); // alocate memory for 1 item
有了 item
之后,你必须为左右链接分配内存
temp->link.left = malloc(sizeof(link));
temp->link.left = malloc(sizeof(link));
请注意 .
,它在那里是因为 item
中的 link
它不是指针。
列表结构是堆栈结构中的一个成员。堆栈封装了列表。这是一种使用几个函数 malloc 和初始化场景的方法。希望对您有所帮助!
typedef struct currentPos{
int x;
int y;
currentPos * next;
}currentPos;
typedef struct stack
{
currentPos * list;
}stack;
int main(){
stack * myStack;
myStack = malloc(sizeof(stack)*1); // mallocing shell
myStack = createStack(myStack);
return(0);
}
stack * createStack(stack * myStack)
{
myStack->list = createList();
return(mtStack);
}
currentPos * createList()
{
currentPos * theHead;
theHead = malloc(sizeof(currentPos)*1); // mallocing inside
theHead->x= 0;
theHead->y=0;
theHead->next = NULL
return(theHead);
}
我正在实施 BST,需要您的建议。该代码有 2 个结构。我需要在项目结构中分配 link 结构。我该怎么做?我需要分配两个 item->link->left & item->link->right
吗?
请举例说明?
struct link;
struct link
{
struct link *left;
struct link *right;
};
struct item
{
struct link link;
uint8_t c;
};
在某处插入函数
item *temp = NULL;
// 我将如何分配内存 ??
首先,你必须为item
分配内存。
item *temp = NULL;
temp = malloc(sizeof(item)); // alocate memory for 1 item
有了 item
之后,你必须为左右链接分配内存
temp->link.left = malloc(sizeof(link));
temp->link.left = malloc(sizeof(link));
请注意 .
,它在那里是因为 item
中的 link
它不是指针。
列表结构是堆栈结构中的一个成员。堆栈封装了列表。这是一种使用几个函数 malloc 和初始化场景的方法。希望对您有所帮助!
typedef struct currentPos{
int x;
int y;
currentPos * next;
}currentPos;
typedef struct stack
{
currentPos * list;
}stack;
int main(){
stack * myStack;
myStack = malloc(sizeof(stack)*1); // mallocing shell
myStack = createStack(myStack);
return(0);
}
stack * createStack(stack * myStack)
{
myStack->list = createList();
return(mtStack);
}
currentPos * createList()
{
currentPos * theHead;
theHead = malloc(sizeof(currentPos)*1); // mallocing inside
theHead->x= 0;
theHead->y=0;
theHead->next = NULL
return(theHead);
}