I am trying to design a program that takes in data from a file, after which it gives numbering to unique data, linked list also contains parent and child lists.
Data
You can have structure like this:
struct abcd{
char data;
struct abcd *next[10]; //array of next nodes
struct abcd *prev[10]; //array of previous nodes
}
When accessing next nodes you can do node->next[i]
instead of node->next
, where 0<= i < 10
. When allocating/creating node reset all array elements to NULL
so that you don't have garbage for uninitialized nodes.
So lets suppose you added node for 'A'
, then you can add nodes for 'B'
and 'C'
as
int idx;
//find index for free element.
for(idx = 0; nodeA->next[idx] && idx < 10; idx++)
;
if(idx == 10)
//dont have free space
nodeA->next[idx] = nodeB;
nodeB->prev[0] = nodeA;
//similarly add for C, you may have to check for appropriate idx!
nodeA->next[idx++]] = nodeC;
nodeC->prev[0] = nodeA;
With this basically you can create node which can have at most 10 next or previous nodes.
Array is for simplicity, you can also do struct abcd **next;
where you can have dynamic number of next/prev nodes. You will have to allocate the memory appropriately though.