/当链表为空或只有一个节点直接返回头指针/
/两两之间交换形成一个组,组与组之间连接:前一个组的前节点下一个指向后一个组的后节点/
/一组内两个节点交换顺序有两步:前节点下一个指向下一组,后节点下一个指向前节点/
/以返回后节点地址为递归,每一个组的后节点作为递归结果返回给外一层递归作为上一组前节点的下一个指向/
/递归形式:后节点下一个指向改为前节点,前节点下一个指向为后一组的后节点,当下一组前节点为空或者下一组只有单个时直接返回下一组前节点中断递归/
struct *listnode swappairs(stuct *listnode head){
if(!head||!head->next) return head;
/空链表和单个链表直接返回;当链表递归到末尾只有一个或者下一组为空时结束循环;/
struct *listnode newhead=head->next:/每一层递归都给新一组的后节点标记一个newhead;/
head->next=swappairs(newhead->next);/递归,每一组的前节点下一个都变为下一组的后节点/
neehead->next=head;/递归完后最外面一层即第一组进行交换/
return newhead;/第一组交换完后后节点为头一个,返回newhead即原链表第二个节点/
}