Witam!
Muszę stworzyć konstrukcję stosu z liczbami zespolonymi.
Tworzę to na liście jednokierunkowej.
Do części rzeczywistej jak i urojonej ma być wczytana liczba albo int, albo float.
Wiem że to można zrobić jakoś za pomocą uni.
struct liczba
{
int licz;
struct liczba *nast;
};
typedef struct liczba elem_listy;
typedef elem_listy *lista_liczb;
Tak obecnie wygląda moja struktura.
Jak to przerobić bym mógł wczytać do części rzeczywistej bądź urojonej liczbę int lub float?
union rzeczywista {
int calk;
double n_calk;
};
union urojona {
int i_calk;
double i_n_calk;
};
struct liczba
{
int licz;
struct liczba *nast;
union rzeczywista rz;
union urojona u;
};
typedef struct liczba elem_listy;
typedef elem_listy *lista_liczb;
Czy podana konstrukcja jest właściwa?
Jak odwołać się do uni gdy tworzony jest nowy element listy?
create(&li,0,0.52);
void create(lista_liczb *l,int k, double d_k)
{
lista_liczb element;
element=(lista_liczb)malloc(sizeof(elem_listy));
element->rz.calk=k; /*było licz*/
element->rz.n_calk=d_k;
element->u.i_calk=k;
element->u.i_n_calk=d_k;
element->nast=*l;
*l=element;
}
To fukcja dodająca elementy do listy. Proszę o nakierowanie mnie co robie źle.
Za pomoc z góry dziękuję!