Struktury - lista jednokierunkowa

0

Witam. Mam do wykonanie zadanie w którym należy utworzyć struktury. Dla każdego właściciela powinna być możliwość określenia listy posiadanych kotów. Lista posiadanych kotów ma być jednokierunkowa. Czy dobrze jest zrobiona lista kotów, czy trzeba coś dodać żeby działała lista jednokierunkowa poprawnie? Czy trzeba robić też koniec listy? Bo trochę nie ogarniam list w C++.

struct Koty
	{
		char imie[20];
		struct data_urodzenia_kota;
		struct Koty* nastepny;
	};
	struct Wlasciciel
	{
		char imie[20];
		char nazwisko[20];
		struct data_urodzenia;
		struct Koty* poczatek;

	};
	struct data_urodzenia
	{
		int dzien;
		int miesiac;
		int rok;
	};
	struct data_urodzenia_kota
	{
		int dzien;
		int miesiac;
		int rok;
	};
	
3

Bo trochę nie ogarniam list w C++

https://4programmers.net/Forum/Newbie/198721-lista_jednokierunkowa_c

A poza tym struktura data_urodzenia_kota musi być zdefiniowana przed strukturą Koty oraz data_urodzenia przed strukturą Wlasciciel.

2

Poza tym niepotrzebnie używasz data_urodzenia i data_urodzenia_kota, skoro te dwie struktury niczym się nie różnią. Wyrzuć jedną (tę z kotami), a tę która pozostanie przenieś na górę i będzie git.

2

A poza tym struktura data_urodzenia_kota musi być zdefiniowana przed strukturą Koty oraz data_urodzenia przed strukturą Wlasciciel.

Nie musi. Te struktury mogą być zadeklarowane przed, ale zdefiniowane po:

struct data_urodzenia;
struct Kot
    {
        char imie[20];
        struct data_urodzenia;
        struct Kot* nastepny;
    };
struct data_urodzenia
    {
        int dzien;
        int miesiac;
        int rok;
    };
0

Prosiłbym, żeby się skupić na poprawności listy kierunkowej czy dobrze wskaźniki są ustawione, czy coś dodać, odjąć itd. Zawartość struktur zostawmy w spokoju, mnie interesuje tylko czy lista jednokierunkowa w tym kodzie jest poprawnie zaimplementowana i czy coś zmienić aby lista działała poprawnie. Lista posiadanych kotów ma być w strukturze Wlasciciel, liczba kotów ma być nieograniczona.
Co do daty urodzenia, to osobno musi data urodzenia właściciela i osobno kota.

struct data_urodzenia
	{
		int dzien;
		int miesiac;
		int rok;
	};
	struct data_urodzenia_kota
	{
		int dzien;
		int miesiac;
		int rok;
	};
	struct Koty
	{
		char imie[20];
		struct data_urodzenia_kota;
		struct Koty* nastepny;
	};
	struct Wlasciciel
	{
		char imie[20];
		char nazwisko[20];
		struct data_urodzenia;
		struct Koty* poczatek;

	};
4
#include <stdio.h>

typedef struct
{
   short day,month,year;
} Data;

typedef struct _Cat
{
   char name[20];
   Data birthday;
   struct _Cat *next;
} Cat;
    
typedef struct
{
   Cat *head,*tail;
} CatList;

typedef struct _Owner
{
   char name[20];
   char surname[40];
   Data birthday;
   struct _Owner *next;
   CatList cats;
} Owner;
    
typedef struct
{
   Owner *head,*tail;
} OwnerList;

int main()
{
   OwnerList owners={NULL,NULL};
   return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1