#include <stdio.h> #include <stdlib.h> #define a_alloc \ (struct lista_alkio *) \ malloc(sizeof(struct lista_alkio)) struct lista_alkio { int arvo; struct lista_alkio *seuraava; }; void tulosta_lista( struct lista_alkio *p ) { while ( p != NULL ) { printf( ā€%d\nā€, p->arvo ); p = p->seuraava; } } void vie_listaan(struct lista_alkio **p, int n) { struct lista_alkio *t = *p; if (*p == NULL || n < (*p)->arvo) { *p = a_alloc; (*p)->arvo = n; (*p)->seuraava = t; } else { struct lista_alkio *edellinen; do { if (t -> arvo == n) return; edellinen = t; t = t -> seuraava; } while(t != NULL && t -> arvo < n); if ((t == NULL) || (t->arvo != n)) { edellinen ->seuraava = a_alloc; edellinen->seuraava->arvo = n; edellinen->seuraava->seuraava = t; } } } int main(void) { struct lista_alkio *ap; int uusi; ap = NULL; while (scanf(ā€%dā€, &uusi) == 1) vie_listaan(&ap, uusi); tulosta_lista(ap); return 0; }