Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Rad sa listama: brisanje, odredjivanje pozicije

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Rad sa listama: brisanje, odredjivanje pozicije

[ Pregleda: 3226 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

makari

Član broj: 77649
Poruke: 12
*.PPPoE-1292.sa.bih.net.ba.



Profil

icon [Zadatak] Rad sa listama: brisanje, odredjivanje pozicije14.04.2007. u 18:04 - pre 207 meseci
da li neko slucajno ima rijesene ove dvije funkcije ili kako bih ih mogao rijesiti...
bio bih jako zahvalan na bilo kakvoj pomoci...

Zadatak glasi:

Neka je data struktura cvora liste,te pretpostavimo da lista nije prazna,te da ima n elemenata.
Napisati:

a)funkciju koja iz liste brise sve brojeve djeljive sa 4
b)funkciju koja odredjuje poziciju u listi odredjenog cvora.

Code:
struct cvor{
int element;
cvor *sljedeci;
}

Na raspolaganju su dva pomocna pokazivaca
Code:

cvor *glava=NULL;
cvor *rep=NULL;
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp382.bih.net.ba.



Profil

icon Re: [Zadatak] Rad sa listama: brisanje, odredjivanje pozicije22.12.2007. u 21:32 - pre 198 meseci
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 ;)
Prikačeni fajlovi
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Rad sa listama: brisanje, odredjivanje pozicije

[ Pregleda: 3226 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.