单链表
单链表就地翻转
递归算法:
1. void reverse(struct list_node *head)
2. {
3. if(NULL == head || NULL == head->next)
4. return;
5. reverse1(head->next);
6. head->next->next = head;
7. head->next = NULL;
8. }
非递归算法:
1. void reverse2(struct list_node *head)
2. {
3. if (NULL == head)
4. {
5. return;
6. }
8. list_node *curr = head;
9. list_node *next = head->next;
10. list_node *prev = NULL;
11. while (next != NULL) {
12. curr->next = prev;
13. prev = curr;
14. curr = next;
15. next = curr->next;
16. }
18. curr->next = prev;
19. }
