diff --git a/QueueCode/Programa.c b/QueueCode/Programa.c index 139dcfa..1c22421 100644 --- a/QueueCode/Programa.c +++ b/QueueCode/Programa.c @@ -1,9 +1,10 @@ #include #include -#include "Cola.h" +#include "TDAQueue.h" int main(){ - Cola c=formar(formar(formar(nueva(),"a"),"b"),"c"); - impLista(c); - c=desformar(c); - impLista(desformar(c)); + Cola q=formar(formar(formar(formar(nueva(),"a"),"b"),"c"),"d"); + impElem(primero(q)); + q=desformar(q); + impElem(primero(q)); + impElem(primero(desformar(q))); } diff --git a/QueueCode/TDAQueue.h b/QueueCode/TDAQueue.h new file mode 100644 index 0000000..f54426f --- /dev/null +++ b/QueueCode/TDAQueue.h @@ -0,0 +1,37 @@ +#include "Elem.h" +typedef struct Nodo{ + Elem dato; + struct Nodo *sig; +}*ApNodo; +typedef struct CNodo{ + ApNodo prim; + ApNodo ult; +}*Cola; +Cola nueva(){ + Cola t=(Cola)malloc(sizeof(struct CNodo)); + t->prim=t->ult=NULL; + return t; +} +int esNueva(Cola q){return (q->prim==NULL)&&(q->ult==NULL);} +Cola formar(Cola q,Elem e){ + ApNodo t=(ApNodo)malloc(sizeof(struct Nodo)); + t->dato=e; + if(esNueva(q)){ + q->prim=q->ult=t; + t->sig=NULL; + }else{ + q->ult->sig=t; + q->ult=t; + t->sig=NULL; + } + return q; +} +Elem primero (Cola q){return q->prim->dato;} +Cola desformar(Cola q){ + if(q->prim==q->ult){ + q->prim=q->ult=NULL; + }else{ + q->prim=q->prim->sig; + } + return q; +}