Descripción del título
Ingrese una lista vinculada y genere el k-ésimo nodo desde la parte inferior de la lista vinculada. Para ajustarse a los hábitos de la mayoría de las personas, esta pregunta comienza a contar desde 1, es decir, el nodo final de la lista vinculada es el primer nodo desde abajo. Por ejemplo, una lista vinculada tiene 6 nodos. A partir del nodo principal, sus valores son 1, 2, 3, 4, 5 y 6. El penúltimo nodo de esta lista vinculada es el nodo con un valor de 4.
Ejemplo:
Dada una lista vinculada: 1-> 2-> 3-> 4-> 5, y k = 2.
Regrese a la lista vinculada 4-> 5.
Lenguaje : análisis del pensamiento en lenguaje C
- Dado un puntero cur, recorra la lista vinculada para obtener el número de nodos en la suma de la lista vinculada
- Vuelva a apuntar cur al primer nodo que sea cur = head, y luego deje que cur vuelva al paso sum-k + 1 para encontrar el k-ésimo nodo desde la parte inferior en la lista vinculada
- Finalmente regresa a cur
Código
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode Node;
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
Node* cur=head;
int sum=0;
while(cur->next)
{
cur=cur->next;
sum++;
}
cur=head;
for(int i=0;i<sum-k+1;i++)
{
cur=cur->next;
}
return cur;
}
resultado de la operación