comment
IRC Chat
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
  • 6073 Vistas

Karime Cruz y 13 Visitantes están viendo este tema.

Desconectado Olger346

  • *
  • Underc0der
  • Mensajes: 33
  • 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. No tienes permisos para ver links. Registrate o Entra con tu cuenta("color 1f");
  23.  
  24. No tienes permisos para ver links. Registrate o Entra con tu cuenta("cls");
  25.  
  26. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t OPERACIONES QUE SE PUEDEN HACER EN UNA COLA \n\n\n");
  27. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t 1. Ingresar valores en la cola \n");
  28. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t 2. Mostrar datos que contiene la cola \n");
  29. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t 3. Eliminar valores de la cola \n");
  30. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t 4. Salir del programa \n");
  31.  
  32. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&opcion);
  33.  
  34. switch(opcion){
  35. /*---------------------------------------------------*/
  36. /*---------------------------------------------------*/
  37. /* INSERTAR VALORES EN LA COLA */
  38. case 1:{
  39.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("cls");
  40.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t Introduzca la cantidad de elementos de la Cola, max 5: ");
  41.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num);
  42. //      max=max+1; //quitar si se estropea
  43.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\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.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t %d final esta ",fn);
  53.     if(fn==fr)
  54.     {
  55.       i=i+1;
  56.     }
  57.     fn=fn+1;
  58.  
  59.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t Introduzca el dato %d de la cola:\n",fn);
  60.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&dato);
  61.         cola[fn]=dato;
  62.  
  63.  
  64.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n fn =%d ",fn);
  65.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n fr =%d", fr);
  66.  
  67.      }
  68.     }
  69.  
  70.     else
  71.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("La cola esta llena");
  72.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n final es %d ",fn);
  73.      if(fn==max)
  74.      {
  75.          fn=0;
  76.      }
  77.  
  78. }
  79. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  80. break;
  81.  
  82.  
  83. /*---------------------------------------------------*/
  84. /*---------------------------------------------------*/
  85. /* MOSTRAR VALORES DE LA COLA */
  86. case 2:{
  87.  
  88.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("cls");
  89.  
  90.         if(fr==fn)
  91.         {
  92.          No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t La cola esta vacia");
  93.         }
  94.     else
  95.         {
  96.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n Datos de la cola: \n"); i=i+20;
  97.     for(i=1; i<max; i++)
  98.         {
  99.  
  100.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d \n",cola[i]); //cambiar a fn si se estropea el programa
  101.      }
  102.         }
  103.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n Final=%d ",fn);
  104.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n Frente=%d ",fr);
  105. }
  106. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  107. break;
  108. /*---------------------------------------------------*/
  109. /*---------------------------------------------------*/
  110. /* ELIMINAR VALORES EN LA COLA */
  111. case 3:{
  112.  
  113.  No tienes permisos para ver links. Registrate o Entra con tu cuenta("cls");
  114.  
  115. if(fn==fr)
  116. {
  117.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t Cola vacia");
  118. }
  119. else
  120. {
  121.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\t Cuantos elementos desea eliminar: ");
  122.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("%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.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\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. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  145. }
  146. }
  147.  
  148. break;
  149.  
  150. /*---------------------------------------------------*/
  151. /*---------------------------------------------------*/
  152. /* SALIR DEL PROGRAMA*/
  153. case 4:{
  154.  
  155. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\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*)No tienes permisos para ver links. Registrate o Entra con tu cuenta(sizeof(Nodo));
  19.   if(aux == NULL){
  20.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("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.     No tienes permisos para ver links. Registrate o Entra con tu cuenta("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.     No tienes permisos para ver links. Registrate o Entra con tu cuenta(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.   No tienes permisos para ver links. Registrate o Entra con tu cuenta(aux);
  66.   No tienes permisos para ver links. Registrate o Entra con tu cuenta(*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: 4120
Último mensaje Diciembre 11, 2016, 12:41:12 pm
por sanosuken
Script de C / Biblioteca / {Estructura}

Iniciado por Kr3L

Respuestas: 0
Vistas: 1562
Ú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: 1841
Último mensaje Octubre 17, 2014, 04:01:51 pm
por ANTRAX
[ESTRUCTURA DE DATOS] Listas doblemente ligadas [C++]

Iniciado por 2Fac3R

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

Iniciado por 2Fac3R

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