206 24 & recursividad (lista)

24

Dada una lista enlazada, intercambiar cada dos nodos adyacentes y volver su cabeza.

El usuario no puede modificar los valores en los nodos de la lista, sólo los nodos en sí puede ser cambiado.

 

Ejemplo:

Dada 1-> 2-> 3-> 4, debe devolver la lista como 2-> 1-> 4> 3.

206

Revertir una lista enlazada.

Ejemplo:

Entrada: 1-> 2-> 3-> 4-> 5-> NULL
salida: 5-> 4-> 3-> 2-> 1-> NULL
Seguimiento:

Una lista enlazada se puede invertir, ya sea de forma iterativa o de forma recursiva. ¿Podría poner en práctica tanto?


 

Aquí sólo tenemos en cuenta un algoritmo recursivo, 24 son desde el principio, entre dos nodos a cambio. 206 es el orden inverso de principio a fin. (Considerando sólo la lista de nodos de conmutación o no el nuevo cambio de valor de nodo logra)

Nosotros en el código

24

1  clase de soluciones {
 2  pública :
 3      NodoLista * swapPairs (NodoLista * cabeza) {
 4          si (la cabeza == NULL || cabeza-> próximo == NULL)
 5              retorno de la cabeza;
6          NodoLista * t = cabeza-> siguiente;
7          cabeza-> siguiente = swapPairs (t-> siguiente);
8          t-> siguiente = cabeza;
9          retorno t;
10      }
 11 };

206

1  clase de soluciones {
 2  pública :
 3      NodoLista * reverseList (NodoLista * cabeza) {
 4          si (la cabeza == NULL || cabeza-> próximo == NULL) {
 5              retorno de la cabeza;
6          }
 7          NodoLista * ret = reverseList (cabeza-> siguiente);
8          cabeza-> next-> siguiente = cabeza;
9          cabeza-> siguiente = NULL;
10          de retorno ret;
11      }
 12 };

Son 1-> 2-> 3-> 4 de la cadena, por ejemplo:

(El número en el número de línea de la cuadrícula correspondiente a la primera segmento de código)

(* 3 representa el valor de un puntero al nodo 3)

(Doble flecha de flujo de línea del programa)

 


 

24 cuando se considera visible tres nodos -> el nodo actual, el siguiente punto al nodo actual, el siguiente nodo al siguiente nodo de los puntos de nodo actual (regreso recursiva).

Los dos primeros nodos pueden intercambiar estos tres nodos, los nodos de retorno recursiva considera que tienen el nodo ajustado. (Tenga en cuenta que la llamada recursiva en el medio del segmento de código, esto significa que la modificación campo de puntero nodo central)

Y teniendo en cuenta el 206, al igual que todo el cambio a la lista, entonces usted tiene que tener un concepto macro, el retorno final de la lista original es el último puntero del nodo, por lo que se ejecuta puntero presionado por el siguiente nodo del nodo actual, devoluciones siempre es "un puntero al último nodo de la lista con respecto a la original." (Tenga en cuenta que la llamada recursiva antes de que el segmento de código, es decir, antes de la modificación campo de puntero de nodo, que permite a presión directa en el último nodo, el programa continúa para devolver un valor de retorno última recursión, la primera vez es decir, desde el primero de desapilamiento = * 4 <head desapilar> se devuelve al final del mismo puntero)

Recursiva ocurrió antes y después del punto de nodo a un nodo en sí, el nodo antes del nodo es un frente a sí no editan campo de puntero, debido a que el nodo a sí mismo vuelve recurrentemente el último recursiva "siguiente nodo del nodo" una la modificación de puntos de campo puntero al nodo actual. Después del final del puntero nodo retorno recursiva (ahora el nodo de cabeza)


 

Look procedimientos y procedimientos escritos son dos cosas diferentes, ahora echa un vistazo en el número y la posición del puntero demás sería capaz de entender y escribir. Pero por completo su propia escritura era demasiado difícil.

1. ¿Qué se devuelve

2. hacer

3. cuándo dejar de fumar

-> 4 llamadas recursivas de posición.

camino de cada persona para examinar la cuestión, cada opción puede tener diferentes causas. A partir de la escala de modelado de diferentes temas, cada opción puede hacer cosas diferentes, podría tener una gran cantidad de carreteras, pero en realidad el acceso al camino correcto limitado.

 

Supongo que te gusta

Origin www.cnblogs.com/katachi/p/12562278.html
Recomendado
Clasificación