/* compito di esame 16 settembre 2002 */

#include<stdlib.h>
#include<stdio.h>

struct NodoLista {
  char val;
  struct NodoLista *next;
};

typedef struct NodoLista *TipoLista;


/*
  legge una lista da file
*/

TipoLista LeggiFile(char *nomefile) {
  FILE *fd;
  TipoLista l, s;
  int e;
  int res;

  fd=fopen(nomefile, "r");
  if(fd==NULL) {
    perror("Errore in apertura del file");
    exit(1);
  }

  l=malloc(sizeof(struct NodoLista));
  s=l;

  while(1) {
    res=fscanf(fd, "%d", &e);

    if(res!=1)
      break;

    s->next=malloc(sizeof(struct NodoLista));
    s=s->next;
    s->val=e;
  }

  s->next=NULL;

  s=l;
  l=l->next;
  free(s);

  return l;
}


/*
  stampa una lista
*/

void StampaLista(TipoLista l) {
  while(l!=NULL) {
    if(l->val!=' ')
      printf("%d ", l->val);
    else
      printf("_");
    l=l->next;
  }
}


/* inserire qui la soluzione */


/*
  main
*/

int main(int argn, char *argv[]) {
  TipoLista l, s;

			/* controllo argomenti */
  if(argn-1!=1) {
    printf("Dare il nome del file che contiene la lista\n");
    exit(1);
  }

			/* legge la lista */
  l=LeggiFile(argv[1]);

			/* stampa la lista */
  printf("lista letta in ingresso: ");
  StampaLista(l);
  printf("\n");


			/* trova la posizione */
  s=SoloPari(l);


			/* stampa la soluzione */
  printf("lista risultato: ");
  StampaLista(s);
  printf("\n");

  return 0;
}
