题目:输入一个链表,反转链表后,输出新链表的表头。
示例:
输入:
{1,2,3}
复制
返回值:
{3,2,1}
解题方法:
public ListNode ReverseList(ListNode head) {
//判断结点为空,或者结点数为1的链表,反转链表后,值为其本身
if (head == null || head.next == null) {
return head;
}
//初始化pre指针,用于记录当前结点的前一个结点地址
ListNode pre = null;
//初始化p指针,用于记录当前结点的下一个结点地址
ListNode p = null;
//head指向null时,循环停止
while (head != null) {
//使用p指针指向当前结点的下一个结点
p = head.next;
//让当前结点下一个元素指向当前结点的前一个元素
head.next = pre;
//pre指针指向当前结点,
pre = head;
//head指向p(保存着原链表中head的下一个结点地址)
head = p;
}
//循环结束后,pre所指向的就是翻转链表的头结点
return pre;
}
版权声明:本文为qq_38360675原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。