Witam, mam za zadanie stworzyć program do przechowywania danych osobowych na liście dwukierunkowej, jednak mam problem którego nie mogę rozwiązać ze strukturą lista_osob, którego nie mogę rozwiązać. Liczę na pomoc.
#include <stdio.h>
#include <stdlib.h>
struct osoba
{
char Nazwisko[100];
char Imie[100];
char Plec[10];
int PESEL;
int Wiek;
};
struct lista_osob
{
lista_osob *s_up;
osoba s;
lista_osob *s_down;
};
void ustaw_osobe(lista_osob &st)
{
scanf("Podaj nazwisko osoby: %s", &Nazwisko);
scanf("Podaj imie osoby: %s", &Imie);
scanf("Podaj plec osoby: %s", &Plec);
scanf("Podaj PESEL: %d", &PESEL;);
scanf("Podaj wiek: %d", &Wiek);
}
void dodaj_osobe(lista_osob **s)
{
lista_osob* t = *s;
if(*s){
lista_osob* st = new lista_osob;
ustaw_osobe(*st);
while(t->s_down){
t = t->s_down;
}
st->s_up = t;
st->s_down = 0;
t->s_down = st;
}else{
*s = new lista_osob;
ustaw_osobe(**s)
(*s)->s_up = NULL;
(*s)->s_down = NULL;
}
}
void usun_osobe(lista_osob **s, int index)
{
if(*s && index > -1){
lista_osob *indx = *s;
for(int i = 1; i <=index; i++){
indx = indx->s_down;
}
if(!indx->s_up && !indx->s_down){
delete indx;
}else if(index == 0){
*s = (*s)->s_down;
delete indx;
indx = 0;
}else if(indx->s_up && indx->s_down){
indx->s_up->s_down = indx->s_down;
indx->s_down->s_up = indx->s_up;
delete indx;
indx = 0;
}else if(!indx->s_down){
indx->s_up->s_down = 0;
delete indx;
indx = 0;
}
}
}
void wypisz_osoby(lista_osob *s)
{
if(s){
printf("=========================================================\n");
do{
printf("Nazwisko: %s", s->s.Nazwisko);
printf("Imie: %s", s->s.Imie);
printf("Plec: %s", s->s.Plec);
printf("PESEL: %d", s->s.PESEL);
printf("Wiek: %d", s->s.Wiek);
printf("=========================================================\n");
s = s->s_down;
}while(s);
}
}
void zwolnij_pamiec(lista_osob **s)
{
lista_osob *temp;
while(*s){
temp = (*s)->s_down;
delete (*s);
*s = temp;
}
}
int main()
{
lista_osob *s = 0;
dodaj_osobe(&s);
wypisz_osoby(s);
return 0;
}