send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Estructura de Datos [Cola Circular][C]

  • 1 Respuestas
  • 5105 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Olger346

  • *
  • Underc0der
  • Mensajes: 29
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
  • Twitter: @Olger346
« en: Junio 26, 2015, 12:23:05 pm »
Este es el primer tema que aporto a la comunidad. Espero que ayude a más de uno que se esta aventurando en estos temas. El programa tiene un pequeño error en la eliminación de los datos (cola circular) que no he podido arreglar, pero servirá como algoritmo base para cualquier pionero o perdido del tema.
Código: C
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. /*PROYECTO#2
  6.  Grupo:11R-122 Universidad Tecnológica de Panamá
  7. //Importante-----------------La cola funciona, hay que eliminar dos elementos y luego introducir, es un error que no hemos podido arreglar, pero por todo lo demas funciona bien
  8. */
  9. // COLA
  10. main(){
  11.  
  12.         int cola[6]={NULL}, fr,fn, max, dato, opcion,x,eliminar,i,num,k;
  13.         int *frente,*puntero;
  14.         max=6;
  15.         //cola[0]=0;
  16.         fr=0;
  17.         fn=0;
  18.         i=0;
  19.  
  20. do{
  21.  
  22. You are not allowed to view links. Register or Login("color 1f");
  23.  
  24. You are not allowed to view links. Register or Login("cls");
  25.  
  26. You are not allowed to view links. Register or Login("\n\t OPERACIONES QUE SE PUEDEN HACER EN UNA COLA \n\n\n");
  27. You are not allowed to view links. Register or Login("\n\t 1. Ingresar valores en la cola \n");
  28. You are not allowed to view links. Register or Login("\n\t 2. Mostrar datos que contiene la cola \n");
  29. You are not allowed to view links. Register or Login("\n\t 3. Eliminar valores de la cola \n");
  30. You are not allowed to view links. Register or Login("\n\t 4. Salir del programa \n");
  31.  
  32. You are not allowed to view links. Register or Login("%d",&opcion);
  33.  
  34. switch(opcion){
  35. /*---------------------------------------------------*/
  36. /*---------------------------------------------------*/
  37. /* INSERTAR VALORES EN LA COLA */
  38. case 1:{
  39.         You are not allowed to view links. Register or Login("cls");
  40.     You are not allowed to view links. Register or Login("\n\t Introduzca la cantidad de elementos de la Cola, max 5: ");
  41.         You are not allowed to view links. Register or Login("%d",&num);
  42. //      max=max+1; //quitar si se estropea
  43.         You are not allowed to view links. Register or Login("\n\t La posicion %d esta reservada en la cola circular como frente \n",fr);
  44.  
  45.  
  46.         if(fr!=(fn+1)%max){
  47.  
  48.  
  49.     //fn=(fn+1)%max;
  50.     for(i=0; i<=num; i++){
  51.  
  52.     You are not allowed to view links. Register or Login("\n\t %d final esta ",fn);
  53.     if(fn==fr)
  54.     {
  55.       i=i+1;
  56.     }
  57.     fn=fn+1;
  58.  
  59.         You are not allowed to view links. Register or Login("\n\t Introduzca el dato %d de la cola:\n",fn);
  60.         You are not allowed to view links. Register or Login("%d",&dato);
  61.         cola[fn]=dato;
  62.  
  63.  
  64.         You are not allowed to view links. Register or Login("\n fn =%d ",fn);
  65.         You are not allowed to view links. Register or Login("\n fr =%d", fr);
  66.  
  67.      }
  68.     }
  69.  
  70.     else
  71.     You are not allowed to view links. Register or Login("La cola esta llena");
  72.     You are not allowed to view links. Register or Login("\n final es %d ",fn);
  73.      if(fn==max)
  74.      {
  75.          fn=0;
  76.      }
  77.  
  78. }
  79. You are not allowed to view links. Register or Login();
  80. break;
  81.  
  82.  
  83. /*---------------------------------------------------*/
  84. /*---------------------------------------------------*/
  85. /* MOSTRAR VALORES DE LA COLA */
  86. case 2:{
  87.  
  88.         You are not allowed to view links. Register or Login("cls");
  89.  
  90.         if(fr==fn)
  91.         {
  92.          You are not allowed to view links. Register or Login("\n\t La cola esta vacia");
  93.         }
  94.     else
  95.         {
  96.         You are not allowed to view links. Register or Login("\n Datos de la cola: \n"); i=i+20;
  97.     for(i=1; i<max; i++)
  98.         {
  99.  
  100.     You are not allowed to view links. Register or Login("%d \n",cola[i]); //cambiar a fn si se estropea el programa
  101.      }
  102.         }
  103.     You are not allowed to view links. Register or Login("\n Final=%d ",fn);
  104.     You are not allowed to view links. Register or Login("\n Frente=%d ",fr);
  105. }
  106. You are not allowed to view links. Register or Login();
  107. break;
  108. /*---------------------------------------------------*/
  109. /*---------------------------------------------------*/
  110. /* ELIMINAR VALORES EN LA COLA */
  111. case 3:{
  112.  
  113.  You are not allowed to view links. Register or Login("cls");
  114.  
  115. if(fn==fr)
  116. {
  117.         You are not allowed to view links. Register or Login("\n\t Cola vacia");
  118. }
  119. else
  120. {
  121.     You are not allowed to view links. Register or Login("\n\t Cuantos elementos desea eliminar: ");
  122.     You are not allowed to view links. Register or Login("%d",&eliminar);
  123.         //fr=(fr(fr+1)%max);
  124.         for(x=0; x<eliminar; x++)
  125.         {
  126.     frente=&cola[0];
  127.     //cambiar a menos si se estropea el programa
  128.         frente[fr]=NULL; //quitar esto si se estropea el programa
  129.         fr++;
  130.     frente[fr]=NULL;
  131.         frente=&cola[fr];
  132.         You are not allowed to view links. Register or Login("\n\t El elemento de la posicion %d fue eliminado",fr);
  133.         /* if(fr>fr-1)
  134.      {
  135.          i=i-fn;
  136.       //   fn=fn-1;
  137.       //   puntero=&num;
  138.        //  puntero=NULL;
  139.  
  140.     }*/
  141.  
  142.  
  143.      }
  144. You are not allowed to view links. Register or Login();
  145. }
  146. }
  147.  
  148. break;
  149.  
  150. /*---------------------------------------------------*/
  151. /*---------------------------------------------------*/
  152. /* SALIR DEL PROGRAMA*/
  153. case 4:{
  154.  
  155. You are not allowed to view links. Register or Login("\n Saliendo del programa ");
  156. return 0;
  157. }
  158. break;
  159. }
  160. }while(opcion<5);
  161. }
  162.  
  163.  
  164.  
  165.  
« Última modificación: Junio 28, 2015, 09:14:01 pm por rollth »
"Cuando se nace pobre, estudiar es el mayor acto de rebeldía contra el sistema. El saber rompe las cadenas de la esclavitud" -Tomas Bulat.

Desconectado sitoftonic

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Abril 06, 2017, 10:28:13 am »
Aquí te dejo una alternativa implementada con dos archivos, uno .h y otro .c

cola.h

Código: C
  1.  
  2. #include <stdio.h>
  3. #define MAX 100
  4.  
  5. typedef int Elemento; //Cambiar int por cualquier otro tipo.
  6.  
  7. typedef struct{
  8.         Elemento info[MAX];
  9.         int q;
  10.         int cabeza;
  11. } Cola;
  12.  
  13. typedef struct n{
  14.   Element e;
  15.   struct n *sig;
  16. } Nodo;
  17.  
  18.  
  19. Cola COLA_crea();
  20. void COLA_anadir(Cola *c, Elemento e);
  21. Elemento COLA_primero(Cola c);
  22. void COLA_sacar(Cola *c);
  23. int COLA_vacia(Cola c);
  24. void COLA_destruye(Cola *c);
  25.  
  26.  
  27.  

cola.c

Código: C
  1.  
  2. #include <stdio.h>
  3. #include "cola.h"
  4.  
  5. //CREA LA COLA
  6. Cola COLA_crea(){
  7.   Cola c;
  8.  
  9.   c.cabeza = NULL;
  10.   c.ult = NULL;
  11.   return c;
  12. }
  13.  
  14. //AÑADIR ELEMENTO A LA COLA
  15. void COLA_anadir(Cola *c, Element e){
  16.   Nodo *aux;
  17.  
  18.   aux=(Nodo*)You are not allowed to view links. Register or Login(sizeof(Nodo));
  19.   if(aux == NULL){
  20.     You are not allowed to view links. Register or Login("Error en la peticio de memoria");
  21.   }
  22.   else{
  23.     (*aux).e = e;
  24.     (*aux).sig = NULL;
  25.     if(((*c).cabeza || (*c).ult) == NULL){
  26.       (*c).cabeza = aux;
  27.     }
  28.     else{
  29.       (*(*c).ult).sig = aux;
  30.     }
  31.     (*c).ult = aux;
  32.   }
  33. }
  34.  
  35. //SACAR ELEMENTO A LA COLA
  36. void COLA_sacar(Cola *c){
  37.   Nodo *aux;
  38.  
  39.   if((*c).cabeza == NULL){
  40.     You are not allowed to view links. Register or Login("Cola buida!\n");
  41.   }
  42.   else{
  43.     aux = (*c).cabeza;
  44.     (*c).cabeza = (*aux).sig; //El contingut del punter que apunta al primer node de la cola passa a apuntar el sigüent node
  45.     You are not allowed to view links. Register or Login(aux);
  46.     if ((*c).cabeza == NULL){
  47.       (*c).ult = NULL;
  48.     }
  49.   }
  50. }
  51.  
  52. //COMPROBAR SI LA COLA ESTÁ VACÍA
  53. int COLA_vacia(Cola c){
  54.   return ((*c).cabeza) == NULL);
  55. }
  56.  
  57. //DESTRUIR COLA
  58. int COLA_destruye(Cola *c){
  59.   Nodo *aux;
  60.  
  61.   while(*c) != NULL){
  62.     aux = *c;
  63.     *c = (*aux).sig;
  64.   }
  65.   You are not allowed to view links. Register or Login(aux);
  66.   You are not allowed to view links. Register or Login(*p);
  67. }
  68.  
  69.  

 

¿Te gustó el post? COMPARTILO!



[Libro] Programacion en C, metodología, algoritmos y estructuras datos

Iniciado por Stiuvert

Respuestas: 3
Vistas: 3792
Último mensaje Diciembre 11, 2016, 12:41:12 pm
por sanosuken
Script de C / Biblioteca / {Estructura}

Iniciado por Kr3L

Respuestas: 0
Vistas: 1265
Último mensaje Junio 22, 2016, 03:29:09 am
por Kr3L
[ESTRUCTURA DE DATOS] Listas doblemente ligadas [C++] (otro ejemplo)

Iniciado por 2Fac3R

Respuestas: 1
Vistas: 1616
Último mensaje Octubre 17, 2014, 04:01:51 pm
por ANTRAX
[ESTRUCTURA DE DATOS] Listas doblemente ligadas [C++]

Iniciado por 2Fac3R

Respuestas: 1
Vistas: 4823
Último mensaje Octubre 17, 2014, 04:04:50 pm
por Khala
[ESTRUCTURA DE DATOS] Árbol binario [C++]

Iniciado por 2Fac3R

Respuestas: 0
Vistas: 1815
Último mensaje Octubre 17, 2014, 04:06:25 pm
por 2Fac3R