/*
 * Soubor:  20111201-Thu-seznam.c
 * Datum:   01.12.2011 09:12
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha: 
 * Popis:   
 ****************************************************/
#define _ISOC99_SOURCE
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>


typedef struct bod {
    int x;
    int y;
    struct bod *next;
} BOD;
/****************************************************
 *               Hlavní program.
 ****************************************************/
int main(void)
{
    BOD *prvni;                 // první položka seznamu
    BOD *novy;                  // nová položka zeznamu
    int bodX, bodY;

    prvni = NULL;

    // zadávám tak dlouho dokud nejsou obě hodnoty 0
    while (1) {
        printf("zadej X a Y: ");
        scanf("%d %d", &bodX, &bodY);
        if (bodX == 0 && bodY == 0) {
            break;
        }
        // přídám na zaščátek seznamu
        novy = malloc(sizeof(BOD));
        novy->x = bodX;
        novy->y = bodY;
        novy->next = prvni;
        prvni = novy;
    }
    novy = NULL;

    // Vypíšu první položku v seznamu
    printf("X: %d, Y: %d\n", prvni->x, (*prvni).y);

    // Vypíšeme všechny položky v seznamu
    BOD *pracovni = prvni;
    while (1) {
        printf("X: %7d, Y: %7d\n", pracovni->x, pracovni->y);
        pracovni = pracovni->next;
        if (pracovni == NULL) {
            break;
        }
    }
    pracovni = NULL;

    // je třeba korektně uvolnit paměť
    while (1) {
        pracovni = prvni;
        prvni = (*prvni).next; // stejné jako prvni->next
        free(pracovni);
        if (prvni == NULL) {
            break;
        }
    }
    prvni = NULL;
    pracovni = NULL;

    return 0;
}

