Node*exchange(Node*head)
{
Node *p = *head,*q,*r;
if(!head) //判断参数的有效性
{
return head;
}
if(head && !head->next) //如果链表长度为1
{
return head;
}
q = p->next; //指向下一节点
r = q->next; //指向下下节点
p->next = NULL; //原链表首节点指向NULL
while(r) //循环判断,直至原链表指向NULL
{
q->next = p; //原链表下一节点指向原链表首节点
p = q; //往后挪一节点
q = r; //
r = r->next; //
}
q->next = p; //处理原链表最后一个节点
head = q; //现链表头节点为原链表尾节点
return head; //返回改变完成后的链表
}
//对于双向链表,则是很简单,从尾节点开始往前一个节点开始指,直到指到头节点。
参考的博客:https://blog.youkuaiyun.com/优快云___优快云/article/details/84592678