<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ES-AR link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Buenas tardes, este ejercicio me está presentando el error segmentation fault y la verdad que no tengo idea de que estoy haciendo mal desde ya muchas gracias por la ayuda o información que me puedan brindar<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>/*Ejercicio 8.2.<o:p></o:p></p><p class=MsoNormal>Repetir el ejercicio anterior creando una estructura struct dNode para una lista doblemente<o:p></o:p></p><p class=MsoNormal><span lang=EN-US>enlazada.*/<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>#include <stdio.h><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#include <stdlib.h><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal>//declaro la estructura la cual va a ser un tipo de dato que contiene nombre, apell y edad<o:p></o:p></p><p class=MsoNormal><span lang=EN-US>typedef struct sData<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>{<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>char Nombre[30];<o:p></o:p></span></p><p class=MsoNormal>char Apellido[30];<o:p></o:p></p><p class=MsoNormal>char Edad[10];<o:p></o:p></p><p class=MsoNormal>}tiposData;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>//Creo el nodo que va a contener el tipo de dato     tiposData dato;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> <span lang=EN-US>typedef struct Nodo<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>{<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    tiposData dato;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    </span>struct Nodo *anterior,*siguiente;<o:p></o:p></p><p class=MsoNormal>} tipoNodo;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>typedef tipoNodo *pNodo;<o:p></o:p></p><p class=MsoNormal>typedef tipoNodo *Lista;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>void Insertar(Lista *lista, tiposData v) {<o:p></o:p></p><p class=MsoNormal>   pNodo nuevo, actual;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>   /* Crear un nodo nuevo */<o:p></o:p></p><p class=MsoNormal>   nuevo = (pNodo)malloc(sizeof(tipoNodo));<o:p></o:p></p><p class=MsoNormal>   nuevo->dato = v;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>   /* Colocamos actual en la primera posición de la lista */<o:p></o:p></p><p class=MsoNormal>   actual = *lista;<o:p></o:p></p><p class=MsoNormal>   if(actual) while(actual->anterior) actual = actual->anterior;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>   /* Si la lista está vacía o el primer miembro es mayor que el nuevo */<o:p></o:p></p><p class=MsoNormal>   if(!actual || strncmp(actual->dato.Nombre,v.Nombre) > 0) {<o:p></o:p></p><p class=MsoNormal>      /* Añadimos la lista a continuación del nuevo nodo */<o:p></o:p></p><p class=MsoNormal>      nuevo->siguiente = actual;<o:p></o:p></p><p class=MsoNormal>      nuevo->anterior = NULL;<o:p></o:p></p><p class=MsoNormal>      if(actual) actual->anterior = nuevo;<o:p></o:p></p><p class=MsoNormal>      if(!*lista) *lista = nuevo;<o:p></o:p></p><p class=MsoNormal>   }<o:p></o:p></p><p class=MsoNormal>   else {<o:p></o:p></p><p class=MsoNormal>      /* Avanzamos hasta el último elemento o hasta que el siguiente tenga<o:p></o:p></p><p class=MsoNormal>         un valor mayor que v */<o:p></o:p></p><p class=MsoNormal>      while(actual->siguiente && strncmp(actual->siguiente->dato.Nombre,v.Nombre)< 0)<o:p></o:p></p><p class=MsoNormal>      {<o:p></o:p></p><p class=MsoNormal>          actual = actual->siguiente;<o:p></o:p></p><p class=MsoNormal>      /* Insertamos el nuevo nodo después del nodo anterior */<o:p></o:p></p><p class=MsoNormal>      nuevo->siguiente = actual->siguiente;<o:p></o:p></p><p class=MsoNormal>      actual->siguiente = nuevo;<o:p></o:p></p><p class=MsoNormal>      nuevo->anterior = actual;<o:p></o:p></p><p class=MsoNormal>      if(nuevo->siguiente) nuevo->siguiente->anterior = nuevo;<o:p></o:p></p><p class=MsoNormal>      }<o:p></o:p></p><p class=MsoNormal>   }<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>//a la funcion mostrar solo se le pasa la lista<o:p></o:p></p><p class=MsoNormal>void mostrar(Lista *l)<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>    Lista aux;<o:p></o:p></p><p class=MsoNormal>    aux=l;<o:p></o:p></p><p class=MsoNormal>    while(aux->siguiente)<o:p></o:p></p><p class=MsoNormal>    {<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>        printf("El nombre es:%s\n",aux->dato.Nombre);<o:p></o:p></p><p class=MsoNormal>        printf("El apellido es:%s\n",aux->dato.Apellido);<o:p></o:p></p><p class=MsoNormal>        printf("La edad es:%s\n",aux->dato.Edad);<o:p></o:p></p><p class=MsoNormal>        printf("\n");<o:p></o:p></p><p class=MsoNormal>        aux=aux->siguiente;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>            }<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>tiposData ingresarDatos()<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>    tiposData nuevoDato;<o:p></o:p></p><p class=MsoNormal>    printf("Ingrese Nombre\n");<o:p></o:p></p><p class=MsoNormal>    scanf("%s",nuevoDato.Nombre);<o:p></o:p></p><p class=MsoNormal>    printf("Ingrese Apellido\n");<o:p></o:p></p><p class=MsoNormal>    scanf("%s",nuevoDato.Apellido);<o:p></o:p></p><p class=MsoNormal>    printf("Ingrese Edad\n");<o:p></o:p></p><p class=MsoNormal>    scanf("%s",nuevoDato.Edad);<o:p></o:p></p><p class=MsoNormal>    return nuevoDato;<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>int main(void)<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>    printf("Programa para crear una lista de datos\n ");<o:p></o:p></p><p class=MsoNormal>    Lista l;<o:p></o:p></p><p class=MsoNormal>    l=(Lista)malloc(sizeof(tipoNodo));<o:p></o:p></p><p class=MsoNormal>    l->anterior=l->siguiente=NULL;<o:p></o:p></p><p class=MsoNormal>    int opcion=1;<o:p></o:p></p><p class=MsoNormal>    tiposData dato;<o:p></o:p></p><p class=MsoNormal>    do<o:p></o:p></p><p class=MsoNormal>    {<o:p></o:p></p><p class=MsoNormal>        printf("Si desea ingresar un dato presione 1 de lo contrario salga con cualquier letra\n");<o:p></o:p></p><p class=MsoNormal>        <span lang=EN-US>scanf("%d",&opcion);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if(opcion==1)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        </span>{<o:p></o:p></p><p class=MsoNormal>           dato = ingresarDatos();<o:p></o:p></p><p class=MsoNormal>           Insertar(&l,dato);<o:p></o:p></p><p class=MsoNormal>           <span lang=EN-US>mostrar(&l);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }while(opcion==1);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>    return 0;<o:p></o:p></span></p><p class=MsoNormal>}<o:p></o:p></p></div></body></html>