Reverse a singly linked list.
A linked list can be reversed either iteratively or recursively. Could you implement both?
Subscribe to see which companies asked this question
分析:
利用三个指针,pre,cur,next,遍历链表,遍历的过程改变他们的指向
pre的作用,cur指针所要反指回来的节点
cur的作用,操作当前节点进行逆置
next的作用,始终先跑到下一个将要逆置的节点位置
class Solution { public: ListNode* reverseList(ListNode* head) { if(head==NULL) return head; //初始化 ListNode* pPreNode=head; ListNode* pCurNode=head->next; pPreNode->next=NULL; ListNode* pNextNode=NULL; while(pCurNode!=NULL) { pNextNode = pCurNode->next; //准备下一个位置 pCurNode->next = pPreNode;//逆置 //pPreNode 和 pCurNode 后移一位 pPreNode = pCurNode; //cur变成前一个 pCurNode = pNextNode;//next变为当前节点 } head = pPreNode; //退出循环是只有pPreNode指针指向实体节点,另外两个已经为NULL return head; } };
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50531851
原作者博客:http://blog.csdn.net/ebowtang
<LeetCode OJ> 206. Reverse Linked List
原文:http://blog.csdn.net/ebowtang/article/details/50531851