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

[Zadatak] Ubaci element izmedju dva cvora u listi

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Ubaci element izmedju dva cvora u listi

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Vojkan123
student
student

Član broj: 323328
Poruke: 1
*.dynamic.sbb.rs.



Profil

icon [Zadatak] Ubaci element izmedju dva cvora u listi26.05.2014. u 22:21 - pre 119 meseci
Program treba da zadati broj iz liste duplira
Ulaz: 2->7->8->9 broj:7
Izlaz: 2->7->7->8->9

Ne znam gde gresim,ako neko moze da pomogne hvala unapred
ovo je moj kod:

Code:

#include<stdio.h>
#include<stdlib.h>
typedef struct cvor{
int broj;
struct cvor* sledeci;
}Cvor;
Cvor* napravi_cvor(int x){
Cvor *novi=(Cvor*)malloc(sizeof(Cvor));
if(novi==NULL){
fprintf(stderr,"malloc \n");
exit(1);
}
novi->broj=x;
novi->sledeci=NULL;
return novi;
}
Cvor* dodaj_na_pocetak(Cvor* lista,int x){
Cvor* novi=napravi_cvor(x);
novi->sledeci=lista;
return novi;
}
void ispisi_listu(Cvor* lista){
for(;lista!=NULL;lista=lista->sledeci)
printf("%d",lista->broj);
putchar('\n');
}
void Push(Cvor ** lista,int broj){
Cvor* novi=(Cvor*)malloc(sizeof(Cvor));
if(novi==NULL)
    return;
novi->broj=broj;
novi->sledeci=*lista;
*lista=novi;
}
void udvoji(Cvor ** lista,int data){
if(*lista==NULL)
return;
Cvor *tekuci=*lista;
for(;tekuci;tekuci=tekuci->sledeci){
if(tekuci->broj==data)
    Push(&(tekuci->sledeci),data);
}
}

int main(){
Cvor *lista=NULL;
int x,data;
while(1){
scanf("%d",&x);
if(x==0)
break;
lista=dodaj_na_pocetak(lista,x);
}
putchar('\n');
ispisi_listu(lista);
putchar('\n');
udvoji(&lista,2);
ispisi_listu(lista);
return 0;
}
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: [Zadatak] Ubaci element izmedju dva cvora u listi31.05.2014. u 12:43 - pre 119 meseci
Igrao sam se malo sa kodom i cini mi se da je problem u ovom delu:

Code:


void udvoji(Cvor ** lista,int data){
    if(*lista==NULL)
        return;
    Cvor *tekuci=*lista;
    for(;tekuci;tekuci=tekuci->sledeci){
        if(tekuci->broj==data)
            Push(&(tekuci->sledeci),data);       
    }
}



Ulazi u beskonacnu petlju i stalno dodaje 2.
Neko workaround resenje bi bilo:

Code:


void udvoji(Cvor ** lista,int data){
    if(*lista==NULL)
        return;
    Cvor *tekuci=*lista;
    for(;tekuci;tekuci=tekuci->sledeci){
        if(tekuci->broj==data)
        {
            Push(&(tekuci->sledeci),data);
            tekuci = tekuci->sledeci;
        }
    }
}


EOF
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Ubaci element izmedju dva cvora u listi

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

Postavi temu Odgovori

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