Implementación de una Cola para almacenamiento de cadenas

MªJose Bañeres

// Programa que implementa el almacenamiento de datos siguiendo la filosofia FIFO:
// First Input First Output.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

 
#define MAX 100
 
char *p[MAX];          /* aqui se almacena la cola de datos */
char *crecup(void);
void calmac(char *c);
int spos,rpos;         /* indicadores de posicion en la cola */
void intro(void),revisar(void),borrar(void);
 
int main(void)
{
  char s[80];
  register int t;
  spos=0;             /* inicializacion de indicadores y de cola */
  rpos=0;
  for(t=0;t<MAX;++t) p[t]=NULL;
 
//Menu
  for(;;){
   printf("nIntroducir, Listar, Borrar o Salirn");
   printf("(escribir la acci¢n deseada):n");
   gets(s);
   *s=toupper(*s);
   switch(*s){
     case ‘I’: intro(); break;
     case ‘L’: revisar();break;
     case ‘B’: borrar(); break;
     case ‘S’: exit(0);
      }
    }
 system("pause");
 return 0;
}
/* Introducir Citas en la Cola */
void intro(void)
{
  char s[100], *p;
  do{
     printf("n Introduce la cadena %d: n",spos+1);
     printf("(Solo dar ENTER para volver al menu)");
     gets(s);
     if(*s==”) break;
     p=(char*)malloc(strlen(s)+1);
     //Control de que la reserva ha ido bien
     if(!p)
     {
     printf("No hay memoria reservadan");
     return;
     }
     strcpy(p,s);
     calmac(p);
     }
     while(*s);
}
/* Revisar la Cola de Citas */
void revisar(void)
{
  int t;
  if(rpos==spos)
  {
  printf("No hay datosn");
  return;
  }
  for(t=rpos;t<spos;t++)
      printf("n Cadena %d:  %sn", t+1,p[t]);
  }
/* Borrar Citas */
void borrar(void)
{
 char* q;
 q=crecup();
 if(q==NULL)
 {
 printf("No hay datosn");
 return;
 }
 printf("Este es el dato recuperado y borrado: Dato numero %d: %sn",rpos+1,q);
 free (q);
}
/* Guardar una Cita */
void calmac(char *q)
{
  if (spos==MAX) // Control de llenado de la cola
  {
    printf("n La cola está llenan");
    return;
   }
   p[spos]=q;
   spos ++;
 }
/* Recuperar una Cita */
char *crecup(void)
{
 if(rpos==spos)
 {
 printf("n No hay datosn");
 return NULL;
 }
 rpos ++;
 return p[rpos-1];
}
Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Una respuesta a Implementación de una Cola para almacenamiento de cadenas

  1. Ricardo dijo:

    molt bé,ric.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s