Linked list bliver ikke oprette korrekt
Hej eksperter.Jeg har oprettet en funktion til at oprette en linked list, som så retunere en pointer til det første element i listen.
funktionen modtager et char array, hvor det er meningen den skal lave et element ud fra hvert bogstav som den holder i char data og tælle hvor mange gange det bliver brugt som den holder i int freq.
Problemet er at den ikke tæller rigtig. og jeg kan ikke gennemskue hvorfor.
Tak for hjælpen på forhånd
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0;
typedef char bool;
typedef char byte;
typedef struct internalNode *internalNodePrt;
typedef struct childNode *childNodePrt;
typedef struct internalNode{
internalNodePrt parent;
childNodePrt child_0;
childNodePrt child_1;
int freq;
} internalNode;
typedef struct childNode{
internalNodePrt parent;
childNodePrt link;
int freq;
byte data;
} childNode;
childNodePrt creatDataList(char *data)
{
childNodePrt first = malloc(sizeof(childNode));
first->data = data[0];
first->freq = 0;
first->link = NULL;
for(int i = 0; i<sizeof(data); i++)
{
bool creatNewChild = true;
childNodePrt pointer = first;
while(1)
{
if(pointer->data == data[i])
{
pointer->freq++;
creatNewChild = false;
break;
}
if(pointer->link == NULL)
{
break;
}else{
pointer = pointer->link;
}
}
if(creatNewChild)
{
childNodePrt newChild_temp = malloc(sizeof(childNode));
newChild_temp->data = data[i];
newChild_temp->freq = 1;
newChild_temp->link = NULL;
pointer->link = newChild_temp;
pointer = pointer->link;
}
}
//return sortChildren(first);
return first;
}
int main (int argc, const char * argv[]) {
childNodePrt list = creatDataList("hhhjhhhhhh hhh");
printf("bogstav: %c antal: %d\n",list->link->data,list->link->freq);
return 0;
}