Prvo, los ti je pristup listama da ih pravis pomocu globalnih funkcija. Ali ocito je da je rijec o nekom domacem zadatku sa fax-a. Bolje ih je staviti u jednu klasu (npr. LinkedList) koja ce imati date funkcije i koja ce manipulisati Cvorovima. Ako vec radis, radi kako treba od pocetka.
Funkcija deleteLink(), treba za deleteDivisibleByFour()
Code:
void SingleLinkedList::deleteLink(int index)
{
if (index == 0)
this->deleteFirst();
else
{
Link *current = first;
for (int i=0; i < index-1; i++)
current = current->next;
Link *toDelete = current->next;
current->next = current->next->next;
delete toDelete;
}
}
Funkcija za brisanje svih brojeva djeljivih sa 4:
Code:
void SingleLinkedList::deleteDivisibleByFour()
{
Link *current = first;
int index = 0;
while (current != NULL)
{
if ((current->data % 4 ) == 0)
{
current = current->next;
this->deleteLink(index);
}
else
{
current = current->next;
index++;
}
}
}
Funkcija koja vraca index trazenog clana:
Code:
int SingleLinkedList::find(int num)
{
Link *current = first;
int index = 0;
while (current->data != num)
{
index++;
current = current->next;
if (current == NULL)
return -1;
}
return index;
}
Sve funkcije nemaju povratne vrijednosti, u duhu zadatka mislim da je besmisleno implementirati obradu pogresaka, izuzetaka itd...
Btw kod je na engleskom, ali smatram da bilo tko ko se iole misli baviti programiranjem mora poznavati tecno jezik. Ko zna, mozda C#2++ jezik naprave Kinezi, pa cemo uciti kako ide dynamic_cast na mandarinskom :))
Eto, nek me netko predlozi za epizodu “Izgubljenih slucajeva” , nadam se da ce u buducnosti ovo nekome pomoci ;)