Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - sitoftonic

#1

Gracias @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta :)
#2
Parece interesante, podrías subirlo otra vez y pasar el enlace? Éste cayó por violar los términos de Mega. Un saludo y gracias
#3
C / C++ / Re:Estructura de Datos [Cola Circular][C]
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


#include <stdio.h>
#define MAX 100

typedef int Elemento; //Cambiar int por cualquier otro tipo.

typedef struct{
Elemento info[MAX];
int q;
int cabeza;
} Cola;

typedef struct n{
  Element e;
  struct n *sig;
} Nodo;


Cola COLA_crea();
void COLA_anadir(Cola *c, Elemento e);
Elemento COLA_primero(Cola c);
void COLA_sacar(Cola *c);
int COLA_vacia(Cola c);
void COLA_destruye(Cola *c);




cola.c

Código: c


#include <stdio.h>
#include "cola.h"

//CREA LA COLA
Cola COLA_crea(){
  Cola c;

  c.cabeza = NULL;
  c.ult = NULL;
  return c;
}

//AÑADIR ELEMENTO A LA COLA
void COLA_anadir(Cola *c, Element e){
  Nodo *aux;

  aux=(Nodo*)malloc(sizeof(Nodo));
  if(aux == NULL){
    printf("Error en la peticio de memoria");
  }
  else{
    (*aux).e = e;
    (*aux).sig = NULL;
    if(((*c).cabeza || (*c).ult) == NULL){
      (*c).cabeza = aux;
    }
    else{
      (*(*c).ult).sig = aux;
    }
    (*c).ult = aux;
  }
}

//SACAR ELEMENTO A LA COLA
void COLA_sacar(Cola *c){
  Nodo *aux;

  if((*c).cabeza == NULL){
    printf("Cola buida!\n");
  }
  else{
    aux = (*c).cabeza;
    (*c).cabeza = (*aux).sig; //El contingut del punter que apunta al primer node de la cola passa a apuntar el sigüent node
    free(aux);
    if ((*c).cabeza == NULL){
      (*c).ult = NULL;
    }
  }
}

//COMPROBAR SI LA COLA ESTÁ VACÍA
int COLA_vacia(Cola c){
  return ((*c).cabeza) == NULL);
}

//DESTRUIR COLA
int COLA_destruye(Cola *c){
  Nodo *aux;

  while(*c) != NULL){
    aux = *c;
    *c = (*aux).sig;
  }
  free(aux);
  free(*p);
}