题目24:反转链表
题目描述:
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
解题思路:
- 为了避免链表在节点i处断裂,需要在调整节点i的next指针前,把节点j保存下来,也就是在调整i的next指针时,除了需要知道i本身,还需要直到i的前一个节点h,定义三个指针,分别指向当前遍历到的节点、它的前一个节点、后一个节点。
- 接着试着找到反转后的头节点。
代码实现:
public static ListNode ReverseListNode1(ListNode pHead) {
ListNode pReversedHead = pHead;
ListNode pNode = pHead;
ListNode pPre = null;
while(pNode!=null) {
ListNode pNext = pNode.next;//保存未反转链表的下个节点
if(pNext==null)
pReversedHead = pNode; //下个节点不为空 调换顺序
pNode.next = pPre; //调换节点顺序
pPre = pNode;
pNode = pNext;
}
return pReversedHead;
}
考点分析:
- 对链表的认识和理解
- 利用指针