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
} p; >
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;
}