Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- /* estructura autorreferenciada */
- struct nodoCola {
- char *dato; /* define dato como un char */
- struct nodoCola *ptrSiguiente; /* apuntador nodoCola */
- }; /* fin de la estructura nodoCola */
- typedef struct nodoCola NodoCola;
- typedef NodoCola *ptrNodoCola;
- /* prototipos de las funciones */
- //void imprimeCola( ptrNodoCola ptrActual );
- int estaVacia( ptrNodoCola ptrCabeza );
- char *retirar( ptrNodoCola *ptrCabeza, ptrNodoCola *ptrTalon );
- void agregar( ptrNodoCola *ptrCabeza, ptrNodoCola *ptrTalon, char *valor );
- //void instrucciones( void );
- /* la función main comienza la ejecución del programa */
- int main(){
- ptrNodoCola frente = NULL;
- ptrNodoCola fin = NULL;
- char nombre[11];
- char linea[17];
- int cont=0;
- while(cont<16){
- fgets(linea, 17, stdin);
- printf("Lei: %s", linea);
- if( linea[0]=='L' ){
- //Extraer el nombre
- int k=0;
- for(int i=6; linea[i]!='\0'; i++)
- nombre[k++] = linea[i];
- nombre[k] = '\0';
- //agregar a la cola
- agregar(&frente, &fin, nombre);
- printf("%s", nombre);
- }
- else{
- //Entonces mandamos
- if( !estaVacia(frente) ){
- char *dato = retirar(&frente, &fin);
- if( frente!=NULL ){
- printf("%s", dato);
- }
- else
- printf("IMPOSIBLE\n");
- }
- }
- cont++;
- }
- // agregar(&frente, &fin, "UNO");
- // agregar(&frente, &fin, "DOS");
- // agregar(&frente, &fin, "TRES");
- //
- // printf("Valor: %s\n",retirar(&frente, &fin) );
- // printf("Valor: %s\n",retirar(&frente, &fin) );
- // printf("Valor: %s\n",retirar(&frente, &fin) );
- }
- /* inserta un nodo al final de la cola */
- void agregar( ptrNodoCola *ptrCabeza, ptrNodoCola *ptrTalon, char *valor ){
- ptrNodoCola ptrNuevo; /* apuntador a un nuevo nodo */
- ptrNuevo = (NodoCola*)malloc( sizeof( NodoCola ) );
- if ( ptrNuevo != NULL ) { /* es espacio disponible */
- ptrNuevo->dato = valor;
- ptrNuevo->ptrSiguiente = NULL;
- /* si está vacía inserta un nodo en la cabeza */
- if ( estaVacia( *ptrCabeza ) ) {
- *ptrCabeza = ptrNuevo;
- } /* fin de if */
- else {
- ( *ptrTalon )->ptrSiguiente = ptrNuevo;
- } /* fin de else */
- *ptrTalon = ptrNuevo;
- } /* fin de if */
- else {
- printf( "no se inserto %c. No hay memoria disponible.\n", valor );
- } /* fin de else */
- } /* fin de la función agregar */
- /* elimina el nodo de la cabeza de la cola */
- char *retirar( ptrNodoCola *ptrCabeza, ptrNodoCola *ptrTalon ){
- char *valor; /* valor del nodo */
- ptrNodoCola tempPtr; /* apuntador a un nodo temporal */
- valor = ( *ptrCabeza )->dato;
- tempPtr = *ptrCabeza;
- *ptrCabeza = ( *ptrCabeza )->ptrSiguiente;
- /* si la cola está vacía */
- if ( *ptrCabeza == NULL ) {
- *ptrTalon = NULL;
- } /* fin de if */
- free( tempPtr );
- return valor;
- } /* fin de la función retirar */
- int estaVacia( ptrNodoCola ptrCabeza ){
- return ptrCabeza == NULL;
- } /* fin de la función estaVacia */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement