题目要求:已知链表的头结点,要求将此链表反转
思路:
1.双指针解法
2.递归写法
代码实现:
1.双指针写法:
首先需要定义两个指针,cur用于遍历元素,pre用于反转链表(作为新链表的头指针),还需要临时指针
cur = head;
pre = NULL;
while(cur){
tmp = cur->next;
cur->next = pre; //方向改变
pre = cur;
cur = tmp;
}
return pre;
2.递归写法:
reverse(cur,pre){ //反转函数
if(cur == NULL) return pre;
tmp = cur->next;
cur->next = pre;
reverse(tmp,pre);
}
reverselist(head){ //主函数
reverse(head,NULL)
}
leetcode实战:
递归法如下:
注:递归法是从双指针法引申而来