Zadanie polega na napisaniu funkcji która zwróciła by największy element w liście jednokierunkowej cyklicznej.
Udało mi się stworzyć funkcję która zwraca max element ale dla listy jednokierunkowej:
struct element_JK{
int number;
element_JK* next;
};
struct single_list{
element_JK* head;
element_JK* tail;
int counter;
};
int max_JK(single_list l){
int max = 0;
element_JK *temp = l.head;
for (int i = 1; i<=l.counter-1; i++){
if(max<temp->number)
max = temp->number;
if(!isEmpty_elementJK(*temp))
temp=temp->next;
}
return max;
}
Wiem tyle że lista cykliczna jednokierunkowa różni się od listy jednokierunkowej tym, że w liście jednokierunkowej ostatni element przechowuje adres NULL, a w liście jednokierunkowej cyklicznej ostatni element przechowuje adres pierwszego elementu w liście.
Stworzyłem zarys takiej funkcji która nie ma prawa działać ale to tyle ile mogłem zrobić w tej kwestii:
struct element{
int number;
element* next;
};
struct single_list{
element* current;
};
bool isEmpty(single_list l){
if (l.current == nullptr)
return true;
return false;
}
int get_max(single_list l){
if (isEmpty(l)){
element *temp = l.current;
int max = temp->number;
do{
if(max < temp->number)
max = temp->number;
temp=temp->next;
}while(temp!=l.current);
return max;
}
return 0;
}
Bardzo prosiłbym o pomoc, zmagam się z tym zadaniem od dłuższego czasu.