Repase el video de donde saque el Ej. una decena de veces y no logro hacer que el programa no me de el error Segmentation fault, busque también en internet el error del compilador y nada.
Nota: Alberto, mil disculpas por no copiarlo de tu video que por cierto lo vi un par de veces pero este me pareció más acorde a mis conocimientos (así me fue). -
Si además de decirme como solucionarlo (cosa que descarto) si me pondrían poner un poco de teoría del porqué me seria de mucha utilidad para no repetir. -
Código
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct ElementoLista{ char *dato; struct ElementoLista *siguiente; }Elemento; typedef struct ListaUbicacion{ Elemento *inicio; Elemento *fin; int tamanio; }Cola; void inicializacion_cola( Cola *serie); int insertar_cola( Cola *serie, Elemento *actual, char *dato ); int quitar_cola( Cola *serie ); void imprimir_cola( Cola *serie ); int main( void ){ Cola *serie; inicializacion_cola( serie ); insertar_cola( serie, serie->fin, "1" ); insertar_cola( serie, serie->fin, "2" ); insertar_cola( serie, serie->fin, "3" ); insertar_cola( serie, serie->fin, "4" ); insertar_cola( serie, serie->fin, "5" ); insertar_cola( serie, serie->fin, "6" ); insertar_cola( serie, serie->fin, "7" ); insertar_cola( serie, serie->fin, "8" ); insertar_cola( serie, serie->fin, "9" ); imprimir_cola( serie ); quitar_cola( serie ); quitar_cola( serie ); quitar_cola( serie ); quitar_cola( serie ); imprimir_cola( serie ); return 0; } void inicializacion_cola( Cola *serie){ serie->inicio = NULL; serie->fin = NULL; serie->tamanio = 0; } int insertar_cola( Cola *serie, Elemento *actual, char *dato ){ Elemento *nuevo_elemento; return -1; return -1; if( actual == NULL ){ if( serie->tamanio == 0 ){ serie->fin = nuevo_elemento; } nuevo_elemento->siguiente = serie->inicio; serie->inicio = nuevo_elemento; }else if( actual->siguiente == NULL ){ serie->fin = nuevo_elemento; nuevo_elemento->siguiente = actual->siguiente; actual->siguiente = nuevo_elemento; } serie->tamanio++; return 0; } int quitar_cola( Cola *serie ){ Elemento *sup_elemento; if( serie->tamanio == 0 ){ return -1; } sup_elemento = serie->inicio; serie->inicio = serie->inicio->siguiente; serie->tamanio--; return 0; } void imprimir_cola( Cola *serie ){ Elemento *actual; int i; actual = serie->inicio; for( i=0; i<serie->tamanio; i++ ){ actual = actual->siguiente; } }
Citar
Program received signal SIGSEGV, Segmentation fault.
0x00000000004007d2 in inicializacion_cola (serie=0x0) at Cola.c:50
50 serie->inicio = NULL;
Saludos. 0x00000000004007d2 in inicializacion_cola (serie=0x0) at Cola.c:50
50 serie->inicio = NULL;