Ĺadny brzuch
Witam!
Napisalem f-cje tworzaca liste 2-kierunkowa i wstawiajaca kolejne rekordy alfabetycznie wzgledem nazwiska
struct data { char nazwisko[80]; char imiona[80]; char urodziny[10]; char telefon[10]; data *nastepny; data *poprzedni; };
data *wsk; wsk=new data; zapis(wsk); wczytuj(wsk,&koniec,&poczatek);
/************FUNKCJA TWORZACA/WCZYTUJACA LISTE*********/ void wczytuj(struct data *nowy, struct data **kon,struct data **pocz) { if(*kon==NULL) //lista pusta { *pocz=nowy; *kon=nowy; nowy->nastepny=NULL; nowy->poprzedni=NULL; } else { struct data *wsk; //dod.wskaznik do struktury wsk=*pocz; while(wsk) { if( (strcmp(nowy->nazwisko,wsk->nazwisko))<0) { if(*pocz==wsk) // na pocz { (*pocz)->poprzedni=nowy; nowy->nastepny=*pocz; nowy->poprzedni=NULL; *pocz=nowy; } else if(*kon==wsk) // koniec { (*kon)->nastepny=nowy; nowy->poprzedni=*kon; nowy->nastepny=NULL; *kon=nowy; } else //srodek { wsk->poprzedni->nastepny=nowy; wsk->nastepny->poprzedni=nowy; } } wsk=wsk->nastepny; } } }
Z tego co zauwazylem na pewno dobrze sa napisane f-cje na pierwszy elelemnt i wstawianie na poczatek.(sprawdzalem osobno) Gdy dam kolejnosc nazwisk zaczynajacych sie na litery np p ( Z , G, C, A) dziala ok .
Problem pojawia sie juz w komencie gdy probuje wstawić cos w srodek lub dopisac do konca.
Gdy w petli zostawie same f-cje dopisujace na pocz i koniec program wyklada na 3-cim elemencie:/
kod:
http://www.toya.net....isu/LISTA2c.CPP
Użytkownik Crisu edytował ten post 11 luty 2006, 21:41
Nie napisałeś na co mają wskazywać nowy->nastepny oraz nowy->poprzedni.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Napisalem f-cje tworzaca liste 2-kierunkowa i wstawiajaca kolejne rekordy alfabetycznie wzgledem nazwiska
struct data { char nazwisko[80]; char imiona[80]; char urodziny[10]; char telefon[10]; data *nastepny; data *poprzedni; };
data *wsk; wsk=new data; zapis(wsk); wczytuj(wsk,&koniec,&poczatek);
/************FUNKCJA TWORZACA/WCZYTUJACA LISTE*********/ void wczytuj(struct data *nowy, struct data **kon,struct data **pocz) { if(*kon==NULL) //lista pusta { *pocz=nowy; *kon=nowy; nowy->nastepny=NULL; nowy->poprzedni=NULL; } else { struct data *wsk; //dod.wskaznik do struktury wsk=*pocz; while(wsk) { if( (strcmp(nowy->nazwisko,wsk->nazwisko))<0) { if(*pocz==wsk) // na pocz { (*pocz)->poprzedni=nowy; nowy->nastepny=*pocz; nowy->poprzedni=NULL; *pocz=nowy; } else if(*kon==wsk) // koniec { (*kon)->nastepny=nowy; nowy->poprzedni=*kon; nowy->nastepny=NULL; *kon=nowy; } else //srodek { wsk->poprzedni->nastepny=nowy; wsk->nastepny->poprzedni=nowy; } } wsk=wsk->nastepny; } } }
Z tego co zauwazylem na pewno dobrze sa napisane f-cje na pierwszy elelemnt i wstawianie na poczatek.(sprawdzalem osobno) Gdy dam kolejnosc nazwisk zaczynajacych sie na litery np p ( Z , G, C, A) dziala ok .
Problem pojawia sie juz w komencie gdy probuje wstawić cos w srodek lub dopisac do konca.
Gdy w petli zostawie same f-cje dopisujace na pocz i koniec program wyklada na 3-cim elemencie:/
kod:
http://www.toya.net....isu/LISTA2c.CPP
Użytkownik Crisu edytował ten post 11 luty 2006, 21:41
Nie napisałeś na co mają wskazywać nowy->nastepny oraz nowy->poprzedni.