Posso provare,se ho capito bene la coda è come un nastro che slitta,lo stack è fisso.
provo a scrivere una cosa del genere:
codice:
typedef struct
{
char *nome;
char *cognome;
}lista;
In pratica per aggiungere un elemento alla coda non ci dovrebbero essere problemi,perchè basta aggiungerlo alla coda.
Il problema è cancellare un elemento,perchè devi fare slittare tutti gli altri,ecco perchè dice di utilizzare due stack.
Quando implemento le pile io in genere tengo il puntatore al numero di strutture anzichè il puntatore al prossimo elemento.
Ecco come ho provato a farlo:
codice:
lista *cancella elemento(lista *pointer_1, *num)
{ // la lista è già allocata in memoria
lista *pointer_2=(lista*)calloc((*num)-1,sizeof(lista)); // alloco una struttura destinata
int i,j=*num-1; // a conetenere la nuova lista
for(i=0;i<j;i++,j--)
{
copia(pointer_2[i],pointer_1[j]); //funzione per copiare
} // il secondo elemento nel primo
// una volta copiate se non erro dovresti avere la struttura nell' ordine inverso,
//tranne l' elemento uscente,cioè pointer_1[0] che va eliminato
free(pointer); // la struttura vecchia va eliminata
for(i=0,j=*num-1;i<j;i++,j--)
{
swap(pointer_2[i],pointer_2[j]; // la swap scambia due strutture
}
return pointer_2;
A questo punto se ho fatto tutto correttamente dovresti avere la stessa identica struttura ma slittata di una posizione,e hai tolto l' elemento che era pointer_1[0] che era da cancellare.
Funzioni come copia e swap poi sarebbero facili da implementare.
Occhio che non ho provato a compilarlo,fammi sapere se è giusto poi.