在另一个结构中分配struct的内存

时间:2015-06-16 20:19:23

标签: c struct malloc

我正在实施BST并需要您的建议。代码有2个结构。我需要在项目结构中分配链接结构。我该怎么办?我是否需要同时分配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;

//我将如何分配内存?

2 个答案:

答案 0 :(得分:0)

首先,您必须为test分配内存。

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)); ,因为.来自link它不是指针。

答案 1 :(得分:0)

list struct是堆栈结构中的成员。堆栈封装了列表。这是一种使用几个函数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);
}