tengo que hacer este programa usando listas encadenadas pero usandolas como si fueran colas

ojala me puedan ayudar.
Código:
#include <stdio.h> #include <conio.h> # define MAXQUEUE 10 struct queue{ char items[MAXQUEUE]; int front,rear; }; struct queue cola,cola2; void insert(struct queue *pq,char x) {if (pq->rear==MAXQUEUE-1) pq->rear=0; else (pq->rear)++; if(pq->front==pq->rear) { printf("\nEstacionamiento Lleno"); getche(); (pq->rear--); }//if else pq->items[pq->rear]=x; }//insert char remove(struct queue *pq) { if(pq->front==pq->rear) printf("\nEstacionamiento Vacio"); else {if(pq->front==MAXQUEUE-1) pq->front=0; else (pq->front)++; return(pq->items[pq->front]); } }//remove void main() { cola.front=MAXQUEUE-1; cola.rear=MAXQUEUE-1; cola2.front=MAXQUEUE-1; cola2.rear=MAXQUEUE-1; char placas,x; int i,opc,band=0; do { clrscr(); printf("\nMenu:"); printf("\n1.Entrada de Auto"); printf("\n2.Salida de Auto"); printf("\n3.Mostrar Lista"); printf("\n4.Salir"); printf("\nOpcion:"); scanf("%d",&opc); if(opc==1) { clrscr(); printf("\n\nPlacas:"); placas=getche(); insert(&cola,placas); getche(); }//if1 if(opc==2) {clrscr(); printf("\nPlacas"); placas=getche(); while(cola.front!=cola.rear) { x=remove(&cola); if(x==placas) {printf("\nCarro Encontrado"); printf("\nBuen Viaje!"); band=1; }//if else insert(&cola2,x); } if(band==0) {printf("\nCarro No Encontrado"); getche();} cola.front=MAXQUEUE-1; cola.rear=MAXQUEUE-1; while(cola2.front!=cola2.rear) {x=remove(&cola2); insert(&cola,x);}//while }//if2 if(opc==3) {clrscr(); for(i=0;i<=MAXQUEUE-1;i++) printf("\nAutos= %c",cola.items[i]); getche(); }//if3 }//do while(opc!=4); }//main