** Pregunta: Dada una lista enlazada, intercambie los nodos adyacentes de dos en uno y devuelva la lista enlazada intercambiada.
No puede simplemente cambiar el valor interno del nodo, sino que debe cambiar el nodo.
Ejemplo:
Dado 1-> 2-> 3-> 4, debe devolver 2-> 1-> 4-> 3.
Fuente:
Enlace de LeetCode : https://leetcode-cn.com/problems/ Los
derechos de autor de swap- Los nodos en pares pertenecen a Lingkou Network. Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente. **
Idea: cree un nuevo puntero de cabeza para la lista vinculada.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head){
struct ListNode *p=NULL,*pnext=NULL;
if(!head)
return head;
if(head!=NULL){
struct ListNode *front_head = (struct ListNode*)malloc(sizeof(struct ListNode));
front_head->next=head;
p=front_head;
while(p->next!=NULL&&p->next->next!=NULL){
pnext=p->next;
p->next=pnext->next;
pnext->next=pnext->next->next;
p->next->next=pnext;
p=pnext;
}
return front_head->next;
}
return;
}