单链表的每个节点都指向下一个节点,所以要想将单链表反序,需要同时知道相连的三个节点,这样将中间节点的指针指向前一个节点之后仍然可以继续向后遍历链表。算法实现如下:
- Node * singleLinkedListReverse(Node *head)
- {
- //判断空链表、单节点链表
- if(null == head || null == head->next)
- {
- return head;
- }
- Node *p1 = head, *p2 = head->next, *p3;
- while(null != p2)
- {
- p3 = p2->next;
- p2->next = p1;
- p1 = p2;
- p2 = p3;
- }
- head->next = null;
- return p1;
- }