Witam.
Piszę program który za zadanie ma stworzyć drzewo o dowolnej liczbie wierzchołków na danym poziomie. Do tego posługuję się listą jednokierunkową która przechowuje wskaźniki do wierzchołków. Do nowego wierzchołka przypisuję sobie ID wcześniej jednak sprawdzam czy podane ID czasem nie istnieje już na liście. I napotkałem pewien problem. Tworzę sobie roota (on też przechowuje listę ze wskaźnikami). Następnie dodaję wierzchołek prowadzony od roota. Później dodaję kolejny i wyrzuca mi właśnie ten błąd "Access violation reading location" w tym miejscu:
node_list_element *node_list::get_head()
{
return head;
}
metoda ta wywoływana jest przez funkcję która przeszukuje drzewo w poszukiwaniu czy podane przez użytkownika ID czasem nie zostało wcześniej wprowadzone:
node *root::find_element(node_list_element *ptr, int node_id)
{
node_list_element *temp = ptr;
while(temp != NULL)
{
if(temp -> get_key() -> get_id() == node_id)
{
return temp -> get_key();
}
else
{
node *temp_node = find_element(temp -> get_key() -> get_list() -> get_head(), node_id);
if(temp_node)
{
return temp_node;
}
}
temp = temp -> get_next();
}
return NULL;
}
całego kodu wklejać nie będę bo sporo tego jakby coś wg Was było potrzebne to pisać.
class root
{
private:
node_list *list;
int is_root;
public:
root()
{
is_root = 0;
list = new(node_list);
}
void set_list(node_list *temp_list);
node_list *get_list();
void set_id();
int get_id();
node *find_element(node_list_element *ptr, int node_id);
};