<html><head></head><body bgcolor="#FFFFFF"><div>El problema no es de compilación, si no de ejecución...</div><div><br></div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><blockquote type="cite"><div><div class="WordSection1" style="page: WordSection1; "><p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; ">   /* Colocamos actual en la primera posición de la lista */<o:p></o:p></p><p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; ">   actual = *lista;<o:p></o:p></p><p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif; ">   if(actual) while(actual->anterior) actual = actual->anterior;</p></div></div></blockquote><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><br></span></div>Creo que acá esta el error... Si bien estas en la <b>primera </b></span><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">posición de la lista, cuando pides el dato de su anterior, este será nulo o sin definir y hace el error de segmentación que estas menciónando... Primero has una validación en caso de haber datos nulos en la lista, este método get que te puede ayudar a entenderlo:</span><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);"><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);">//sirve tanto para siguiente como para anterior, tan solo cambiar la variable</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Nodo *getSiguiente(){</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "> if(actual->siguiente==NULL){</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">return; // esto con el fin que regrese ningún valor o dato</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">}else</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">return siguiente;</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">}</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);"><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);">Para poder evaluar valores nulos debes añadir using namespace std; después de los include...</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);"><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);">Espero haber ayudado</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);">Jose Roberto Sánchez</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);"><br></span><div>El 15/02/2013, a las 09:19 a.m., "Marcela Bustamante" <<a href="mailto:marcela_bustamante@itrsa.com.ar">marcela_bustamante@itrsa.com.ar</a>> escribió:<br><br></div><div></div><blockquote type="cite"><div><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]--><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></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a></span><br><span><a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a></span><br><span>Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a></span></div></blockquote></div></body></html>