La Red de Conocimientos Pedagógicos - Currículum vitae - ¿El método de inserción de lista enlazada en lenguaje C resuelve los siguientes problemas?

¿El método de inserción de lista enlazada en lenguaje C resuelve los siguientes problemas?

Según el significado de la pregunta:

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

siguiente guardado = n

t2- gt; siguiente;

* nt2 = ntTemp

nt2->; siguiente = siguienteGuardar

}

nt2 = nt2 - gt; siguiente;

}

nt 1 = nt 1- gt;

}

}

}

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

}