¿El método de inserción de lista enlazada en lenguaje C resuelve los siguientes problemas?
1. Creación de lista vinculada: cree dinámicamente cualquier número de nodos e insértelos en la lista vinculada según el número de entrada. (Estipulación del título n
2. Clasificación de la lista vinculada: intercambie el contenido del nodo (no la dirección) y conserve el valor del puntero de la lista vinculada (*siguiente valor).
3. Imprima la lista vinculada: use el puntero de la lista vinculada. Recorra la lista vinculada.
Cuarto, libere el espacio de direcciones de la lista vinculada aplicada dinámicamente (el programa finaliza después de su creación en este programa, incluso si se libera de forma gratuita). no está escrito, se publicará una vez completado. Sin embargo, en el complejo Al llamar a crear en el programa, hay código en el seguimiento. Debe escribir una función en mi código para liberar la memoria no utilizada para evitar el desperdicio. p>
El código es el siguiente:
# include ltstdio.h gt
# include ltmalloc.h gt
typedef struct numStruct
{
int num
struct numStruct * siguiente
} NST
NST * insertar 2 lista(int num) ;// Cree nodos según números (dinámicos) e insértelos en la lista vinculada (genera automáticamente por primera vez el nodo principal), devuelva el nodo principal con éxito y devuelva NULL si falla.
void showList(NST * NST head); //Imprimir lista enlazada
void px(NST * NST head); //Ordenar lista enlazada
void); freeList( NST * NST head);//Liberar memoria de lista enlazada
int main()
{
NST * nsthead = NULL
int i=0, n=50, * nums = NULL
while(n gt; 40)
scanf("d ", ampn);
nums =(int *)malloc(sizeof(int)* n);
Si (!nums) devuelve 1;
mientras(i ltn)
scanf ("d", ampnums[i]);
I = 0;
while(i ltn)
NST head = insertar 2 listas (nums[ i ]);
px(cabeza NST);
showList(cabeza NST);
listalibre(cabeza NST);
Devuelve 0;
}
void freeList(NST *nsthead)
{
NST *temp=NULL, * nst = NULL
if(nsthead)
{
NST = NST head- gt;
mientras(nst!= null)
{
temp = nst
NST = NST- gt;
Gratis (temporal); >
}
}
Gratis (NST head);
}
lista de visualización nula (NST *nsthead)< / p>
{
if(nsthead)
mientras(NST head->; next!=null)
{
printf("d ", NST cabeza- gt; siguiente- gt; num);
NST cabeza = NST cabeza- gt
}
printf(" \ n ");
}
void px(NST *nsthead)
{
NST *nt1 =NULL, *nt2=NULL, ntTemp, * nextSave = NULL
if(nsthead)
{
nt 1 = NST head- gt;
mientras(nt1)
{
nt2 = nt 1- gt; siguiente;
blanco(nt2)
{
if(nt 1->; num gtnt2->; número)
{
nt temp = * nt 1 ;
siguiente guardar = nt 1- gt; siguiente;
* nt 1 = * nt2;
nt 1->;siguiente = siguienteGuardar p>
siguiente guardado = n
t2- gt; siguiente;
* nt2 = ntTemp
nt2->; siguiente = siguienteGuardar
}
nt2 = nt2 - gt; siguiente;
}
nt 1 = nt 1- gt;
}
} p>
}
NST *insert2List(int num)
{
NST estático *nsthead=NULL, *nstTail = NULL
NST * nstNew = NULL
NST nuevo =(NST *)malloc(sizeof(NST));
Si (!nstNew) devuelve NULL
NST nuevo - gt; next = NULL
NST nuevo- gt; num = num
if (!nsthead)
{
NST head =(NST *)malloc(sizeof(NST));
Si (!nsthead) devuelve NULL
NST head->; next = nstNew
}
Otro
NST tail->; next = nstNew
nstTail = nstNew
Devolver nsthead
}