Red de conocimientos turísticos - Conocimientos sobre calendario chino - [Estructura de datos] Algoritmos para insertar, eliminar e invertir listas lineales (incluidas listas ordenadas) en listas ordenadas y listas vinculadas.

[Estructura de datos] Algoritmos para insertar, eliminar e invertir listas lineales (incluidas listas ordenadas) en listas ordenadas y listas vinculadas.

1) Los punteros de inicialización pyq apuntan a dos elementos adyacentes en la lista vinculada

2) Cuando p-> cuando next no está vacío, realice las siguientes operaciones:

(1) Si dos elementos adyacentes no son iguales, tanto P como Q retrocederán un paso;

② De lo contrario, cuando los elementos adyacentes sean iguales, los elementos redundantes se eliminarán.

Código fuente del algoritmo

void Delete_Equal(lista enlazada*L)

{ p =(* L)-& gt; ; Siguiente; /*p y q apuntan a dos elementos adyacentes*/

while(p->; next)

{ if(p-& gt; data ! = q- >Datos) /*Si dos elementos adyacentes no son iguales, tanto P como Q retrocederán un paso*/

{ p = p-> next;

Otro

{ while(q->data == p->Data) /*Eliminar cuando los elementos adyacentes sean iguales Elementos redundantes*/

{ r = q;

q = q-& gt;Siguiente;

Gratis(r);

}

p- >; siguiente = q; p = q; q = p->; siguiente;

}/*else*/

}/*Cuando*/

}/*Delete_Equal */

Intente diseñar un algoritmo para implementar la inversión local de la lista enlazada individualmente del nodo líder.

Análisis de algoritmos

1) Las tablas vacías o las tablas con una longitud de 1 no se procesarán.

2) Cuando la longitud de la tabla exceda 2, realice; la siguiente operación:

Primero divida toda la lista vinculada en dos partes, es decir, desconéctese del primer nodo de elemento de la lista vinculada

② Inserte los elementos actuales Q de la; lista enlazada restante en el encabezado de la lista enlazada uno por uno.

Código fuente del algoritmo

void linked list_reverse (lista enlazada L)

{if (! l-& gt; next ||! l-& gt ; next->next)return;

p = L->next; q = p->;next; s = q->next;p- >;next = NULL/*Desconectar de el primer nodo de elemento de la lista enlazada*/

while(s->;next)

{ q->;next = p ;p = q;

q = s; s = s-& gt; Next; /*Inserta los elementos de L en el nuevo encabezado uno por uno*/

}

q->next = p;s->siguiente = q;l->siguiente = s;

}/*LinkList_reverse*/