Estructura de datos en forma de cola

Blanca Simón

/* Estructura de datos: COLA – Sistema FIFO: “First  Input First Output */

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

#define MAX 100

char *p[MAX];          /* 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);
void guardar(void);

int main(void)
{

char s[80];
int t;

spos=0;             /* inicialización de indicadores y de cola */
rpos=0;
for(t=0;t<MAX;++t) p[t]=NULL;

for(;;){
printf(“\nIntroducir, Listar, Borrar,Guardar o Salir\n”);
printf(“(escribir la accion deseada):\n”);
gets(s);
*s=toupper(*s);      /*Hace la primera letra mayúscula */
switch(*s){          /*Elige entre varias opciones */
case ‘I’: intro(); break;
case ‘L’: revisar();break;
case ‘B’: borrar(); break;
case ‘G’: guardar(); break;
case ‘S’: exit(0);

}
system (“cls”);
}
}
/* Introducir datos en la Cola */

void intro(void)
{
char s[100], *p;

do {
printf(“\nIntroduce el dato %d:”, spos+1);
printf(“(dar ENTER para salir)\n\n)”);
gets(s);
if(*s==”) break;        /* Control de que haya dato*/
p=malloc(strlen(s)+1);
strcpy(p, s);
calmac(p);
}
while (*s);
}
/* Revisar la cola de datos */

void revisar(void)
{

int t;
if (rpos==spos) printf (“\n No hay datos”);
for(t=rpos; t<spos; t++)
printf(“n\ Dato: %d: %s\n”, t+1, p[t]);

}
/* Borrar datos */

void borrar(void)
{

char *q;
q=crecup();
if(q==NULL) return;
printf(“\n Borro dato %d: %s, \n”, rpos,q);
free(q);
}
/* Guardar dato */

void calmac(char *q)
{
if(spos==MAX)
{printf(“Cola llena\n”);
return;
}
p[spos]=q;
spos++;

}

/* Recuperar dato */

char *crecup(void)
{
if(spos==rpos)
{printf(“Cola vacia\n”);
return NULL;
}
rpos++;
return p[rpos-1];
}
/*Guardar en un fichero los datos*/
void guardar(void)
{
int t;
FILE *f;
f=fopen(“Datos.txt”, “w+”);
if (f==NULL) {printf(“ERROR al leer fichero\n”); exit(0);}

for(t=rpos; t<spos; t++){
printf(“sigue”);
getchar();
fprintf(f, “dato %d: %s\n”, t-rpos, p[t]);
}
fclose(f);

exit(0);
}

Esta entrada fue publicada en Ciencia y programación. Guarda el enlace permanente.

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