#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SLOWO_LEN 128
struct lista {
char slowo[MAX_SLOWO_LEN];
struct lista *tlumaczenie, *next;
};
typedef struct lista l;
l *lista_pl, *lista_en; /* dwa wskazniki poczatkowe list */
void dodaj_tlumaczenie(char *slowo_pl, char *slowo_en) {
l *ostatni_pl, *ostatni_en; /* to wskazniki na nowo utworzone elementy/slowa w obu listach */
if(!lista_pl) { /* sprawdzaie czy lista_pl istnieje, jesli nie to tworzy nowy element... */
lista_pl = (l*) malloc(sizeof(l));
lista_pl->next = NULL;
ostatni_pl = lista_pl;
} else { /* ... w innym przypadku tworzy nowy element na koncu */
while(ostatni_pl->next) /* przewijanie listy do konca (zamiast przewijac mozesz odrazu wstawic na dobre miejsce - nie trzeba by bylo potem sortowac) */
ostatni_pl = ostatni_pl->next;
ostatni_pl->next = (l*) malloc(sizeof(l));
ostatni_pl = ostatni_pl->next;
ostatni_pl->next = NULL;
}
if(!lista_en) {
lista_en = (l*) malloc(sizeof(l));
lista_en->next = NULL;
ostatni_en = lista_en;
} else {
while(ostatni_pl->next)
ostatni_en = ostatni_en->next;
ostatni_en->next = (l*) malloc(sizeof(l));
ostatni_en = ostatni_en->next;
ostatni_en->next = NULL;
}
strncpy(ostatni_pl->slowo, slowo_pl, MAX_SLOWO_LEN); /* kopiowanie slowa podanego funcji do listy */
strncpy(ostatni_en->slowo, slowo_en, MAX_SLOWO_LEN); /* zostanie skopiowne max MAX_SLOWO_LEN znakow */
ostatni_pl->tlumaczenie = ostatni_en; /* 'przypiecie' tlumaczen do siebie */
ostatni_en->tlumaczenie = ostatni_pl;
}
void wyswietl_tlumaczenia(l* lista) {
while(lista) {
printf("%s\t : %s\n", lista->slowo, lista->tlumaczenie->slowo);
lista = lista->next;
}
}
int main() {
lista_pl = lista_en = NULL;
dodaj_tlumaczenie("leniwy", "idle");
dodaj_tlumaczenie("kod", "code");
dodaj_tlumaczenie("co", "wut");
wyswietl_tlumaczenia(lista_pl);
wyswietl_tlumaczenia(lista_en);
return 0;
}