Red de conocimiento informático - Computadora portátil - Programa de inserción de listas doblemente enlazadas implementado en lenguaje C

Programa de inserción de listas doblemente enlazadas implementado en lenguaje C

/*?

Crear funciones e insertar funciones se han reescrito por completo y se han agregado comentarios cuando fue necesario. ?La captura de pantalla es el resultado de ejecutar en el entorno VC ?6.0.

*/

#includelt;stdio.hgt;

#include?lt;stdlib.hgt;

typedef?struct? nodo?{

int?i;

estructura?nodo?*siguiente, *anterior

}s; *create_list()?{

int?a[]?=?{2, 4, 6, 8, 10}, n?=?sizeof(a)/sizeof(a[0]);

s?*p, *q, *cabeza;

cabeza?=?q?=?p?=?(s?*)malloc(sizeof(s));

head-gt; i?=?0; ?//?0 se utiliza como datos del nodo principal de la lista vinculada

p-gt; gt; anterior?= ?NULL;

while(--n?gt;=?0)?{

q?=?(s?*)malloc(sizeof(s ));

p>

q-gt; i?=?a[n];

p-gt; siguiente?=?q; -gt; prior?=? p;

p?=?q;?//?p baja al nuevo nodo

}

p- gt; siguiente?=?NULL ;

return?head;

}

void?insert_list(s?*head, int?c)?{

s ?*q, *p?=?cabeza;

q?=?(s?*)malloc(tamañode(s));

q -gt; i?=? c;

mientras((p-gt;siguiente?=?NULL)?amp;amp;?(p-gt;siguiente-gt;i?gt;?c ))?p?= ?p-gt; next;

if(p-gt; next-gt; i?lt; ?c)?{?//?Insertar en el medio de la tabla

q- gt;siguiente?=?p-gt;siguiente;

p-gt;siguiente-gt;antes?=?q;

q -gt;antes?=?p;

p-gt; siguiente?=?q;

}

más?if(p-gt; siguiente ?==?NULL)?{? //Insertar al final

p-gt; siguiente?=?q;

q-gt;

q-gt ;next?=?NULL;

}

//Si ya existe i?=?c con el mismo elemento de tamaño en la mesa, se devolverá sin intereses.

}

void?printf_list(s?*head)?{

s?*p?=?head;

int ?n?=?0;

while(p-gt;next?=?NULL)?{

printf("3d?:?3d\n",n? ? 1, p-gt; siguiente-gt; i);

p?=?p-gt;

n

}

printf("\n");

}

principal()?{

estructura?nodo?*cabeza;

int?c;

// clrscr();

head?=?create_list();

printf_list(head);

p>

printf("¿Por favor ingrese los datos insertados?:?");

scanf("d", amp; c

insert_list(); cabeza, c) ;

printf_list(cabeza);

return?0;

}