quando provo a stampare gli elementi della coda, mi stampa correttamente solo l'ultimo inserito .. dov' è l'errore?

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


struct SCoda{
       int n;
       int front;
       int back;
       int capienza;
       int *array;
       };
typedef struct SCoda TCoda;

TCoda Crea_Coda(int capienza);
void Aggiungi_Elemento(TCoda *coda,int x);
int Prelievo_Elemento(TCoda *coda);


int main(int argc, char *argv[])
{
    TCoda coda;
    int i,x,n,ext;
    
    coda=Crea_Coda(5);
    
    printf("Quanti elementi vuoi inserire?");
    scanf("%d",&n);
    
    for(i=0;i<n;i++){
                                 printf("Elemento da inserire:");
                                 scanf("%d",&x);
                                 Aggiungi_Elemento(&coda,x);}
    for(i=0;i<n;i++){
                                 printf("%d  ",coda.array[i]);}
                                 
    
  
  system("PAUSE");	
  return 0;
}

    
   TCoda Crea_Coda(int capienza){
      TCoda coda;
      coda.n=0;
      coda.back=0;
      coda.front=0;
      coda.capienza=capienza;
      coda.array=(int*)malloc(sizeof(int)*capienza);
      return coda;}
      
   void Aggiungi_Elemento(TCoda *coda,int x){
        coda->array[coda->front]=x;
        coda->back++;
        coda->n++;}
   int Prelievo_Elemento(TCoda *coda){
       int x;
       x=coda->array[coda->front];
       coda->front++;
       coda->n--;
       return x;}