Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

[Zadatak] Funkcija za skidanje stringa sa pocetka liste

  • 5 odgovora
  • 3.975 pregleda

Najnovija ↓

[Zadatak] Funkcija za skidanje stringa sa pocetka liste 21.06.2009. u 14:33 · pre 211 meseci #1
funkcija za skidanje stringa sa pocetka liste,nakon sto je pozovem pobrise mi se citava lista.vrati on dobar string,ali
ne znam zasto mi se pobrise citava lista. nije kvar u ''&head'',jer sa samo ''head'' neradi nista.

Code:


// ovo mi stoji gore
struct node 
{
   char *data;
   struct node *next;
};
typedet struct node node;
typedet struct node* pnode;

char *skini_sapoc(pnode &head)
{
       if(!prazna(head))//ova funkcija dobro radi,nisam je piso.
         {
            char*y=(char*)malloc(strlen(head->data)*sizeof(char));
            strcpy(y,head->data)
            pnode x=head;
            head=head->next;
            free(x);
            return y;
         }
       else
          {
             return NULL;  
          }
}


a bez stringa kad je rijec o broja ovo sve odlicno radi,zasto sta sam pogrijesio
Re: [Zadatak] Funkcija za skidanje stringa sa pocetka liste 21.06.2009. u 18:11 · pre 211 meseci #2
U mallocu nisi uračunao jedan bajt za terminator stringa, možda to pokvari nešto, mada ne verujem. Mislim da ti se ne pobriše čitava lista, nego samo izgubiš pokazivač na nju. Na prvi pogled ovo bi trebalo da radi. Moraćeš da debaguješ ovo korak po korak i da u svakom koraku proveriš da li je sve onako kao što bi u tom koraku trebalo da bude. Možda greška nije u ovom delu koda nego u nekom drugom.
Re: [Zadatak] Funkcija za skidanje stringa sa pocetka liste 21.06.2009. u 18:43 · pre 211 meseci #3
Koristiš C++ kompilator? U tom slučaju je "pnode &head" referenca na pokazivač na head, ako si u C-u trebalo bi da koristiš "pnode *head" gde treba u kodu (pokazivač na pokazivač na head) i onda (*head tj. (*head)->data ili napraviš pnode iter = *head pa koristiš iter).

Kako si alocirao head van ove funkcije? Ako si memoriju alocirao kao blok, free(x) će osloboditi ceo blok.

I kao što je Mihajlo već rekao, fali ti prostor za još jedan char u malloc() pozivu.

Moj prigovor bi išao na estetiku, uobičajeno je da ovakve funkcije vraćaju pokazivač na novi početak liste, a da se znakovna niska smešta u pokazivač. Prototip bi onda bio: pnode skini_sapoc(pnode head, char* return);.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: [Zadatak] Funkcija za skidanje stringa sa pocetka liste 21.06.2009. u 19:42 · pre 211 meseci #4
hvala obojici,izgleda sve je bilo uredu isao sam debug korak po korak,greska je bila sto sam u mainu u switch naredbi
imao ispod poziva ove funkcije funkciju oslobodi (koja je brisala citavu listu )a zaboravio sam break poslije ove funkcije ''skini sa pocetka''.

Nista hvala jos jednom
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme