home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
CataniaB
/
teach-act
/
testi-esami
/
labo-6.99
/
turno1
/
parte1.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-06-16
|
1KB
|
96 lines
/* Una possibile soluzione Esame di Laboratorio di Algoritmi 15 giugno 1999
* Turno 1 */
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
/* definizione dei tipi */
typedef struct stackel * stack; /* uno stack e' un puntatore */
typedef struct stackel{ int el; stack next; } stck;
/* operazioni sullo stack */
stack empty(void); /* restituisce uno stack vuoto, cioe' restituisce NULL */
stack push(int,stack); /* aggiunge in testa */
void print(stack); /* stampa lo stack */
stack makestackel(void); /* alloca una nuova cella */
/* main */
main()
{
FILE * fp;
char nome[MAX];
int n;
stack s;
/* creo stack vuoto */
s = empty();
/* leggo il nome del file */
printf("Fornisci il nome del file: ");
scanf("%s", nome);
/* apro il file in lettura */
fp = fopen(nome,"r");
/* carico lo stack con i dati letti da file
* (assumendo il file del formato corretto */
while (fscanf(fp,"%d",&n) && n != -1)
s = push(n,s);
/* stampo lo stack */
print(s);
}
/* funzioni */
stack empty()
{
return NULL;
}
stack push(int el, stack s)
{
stack t;
t=makestackel();
t->el=el;
t->next=s;
return t;
}
stack makestackel(){ return (stack)malloc(sizeof(stck)); }
void print(stack s)
{
printf("\nLo stack ha il seguente contenuto: ");
for(; s !=NULL ; s = s -> next)
printf(" %d",s->el);
printf("\n\n");
}