inicializando nodo de estructura enlazada

¿Qué debo hacer para asignar espacio de memoria para pNode->data ? Quiero poner un solo carácter en él, como pNode->data = "c" . Pero muestra una falla de segmentación y la dirección de memoria para pNode->data es 0x1 que está fuera de enlace.

A continuación se muestra mi código.

 typedef struct node { char* data; int weight; bool end_of_key; struct node* left; struct node* equal; struct node* right; } node_t; typedef struct listnode{ char* data; int weight; struct listnode* next; } listnode_t; node_t* insert(node_t* pNode, char* word, int weight) { if(pNode == NULL) { /** * Create a new pNode, and save a character from word */ pNode = (node_t*) malloc(sizeof(*pNode)); pNode->left = NULL; pNode->equal = NULL; pNode->right = NULL; strcpy(pNode->data, word); } if(*word data)) { /** * Insert the character on the left branch */ pNode->left = insert(pNode->left, word, weight); } else if(*word == *(pNode->data)) { if(*(word+1) == '\0') { /** *set pNode end_of_key_flag to true and assign weight */ pNode->end_of_key = true; pNode->weight = weight; } else { /** * If the word contains more characters, try to insert them * under the equal branch */ pNode->equal = insert(pNode->equal, word+1, weight); } } else { /** * If current char in word is greater than char in pData * Insert the character on the right branch */ pNode->right = insert(pNode->right, word, weight); } return pNode; } 

Desde la statement de nodo, puedo ver que para los datos que no está asignando memoria, solo está creando un puntero al tipo de carácter, puede cambiar la definición de nodo de la siguiente manera (y el cambio de código es necesario para el mismo) –

 typedef struct node { char data; int weight; bool end_of_key; struct node * left; struct node * equal; struct node * right;} node_t;