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
/
DoderoG
/
C_files
/
coda.c
< prev
next >
Wrap
Text File
|
1996-11-03
|
2KB
|
84 lines
/*program coda (input,output);*/
#define maxint 1000000000
#define max 10
typedef int element;
typedef struct lista * plista;
typedef struct lista {
element i;
plista n;
plista pr;
};
typedef struct coda {
plista head, sentinel, tail;
};
struct coda s;
element x;
int i,n;
/*-----------coda----------*/
init ( p)
struct coda *p;
{
p->head = (plista ) malloc (sizeof (struct lista));
p->sentinel = (plista) malloc (sizeof (struct lista));
p->tail = p->head;
p->head->n=p->sentinel;
p->sentinel->pr=p->head;
} /*init*/
enqueue(p,e )
struct coda *p;
element e;
{ plista q;
q = (plista) malloc (sizeof (struct lista));
q->i = e;
q->n = p->head->n;
q->pr = q->n->pr;
q->n->pr = q;
p->tail = p->sentinel->pr;
p->head->n=q;
} /*enqueue*/
element dequeue (p)
struct coda *p;
{ plista q;
element d;
d = maxint;
if (p->tail != p->head)
{ d = p->tail->i;
q = p->tail;
p->tail = p->tail->pr;
}
return (d);
} /*dequeue*/
is_empty(p)
struct coda *p;
{
return(p->head == p->tail);
}
/*-------------------------*/
main ()
{
init (&s);
printf("quanti??");
scanf("%d",&n);
i = n;
while (i--)
{ scanf("%d",&x);
/* printf("ho letto: %d\n", x);*/
enqueue (&s,x);
}
printf ("stampa diritti\n");
i = n;
while (i--)
{ x = dequeue(&s);
printf("%d\n",x);
}
printf("fine\n");
}