2015-06-16 3 views
-2

Я реализую 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; 

// Как бы выделить память ??

ответ

0

Строка списка является членом внутри структуры стека. Стек инкапсулирует список. Это способ 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); 
} 
0

Во-первых, вам необходимо выделить память для 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 от item это не указатель.

+1

Вы не должны указывать возвращаемое значение malloc: http://stackoverflow.com/a/605858/3684343 – mch

Смежные вопросы