C语言:反转一个单链表

 C语言:反转一个单链表_第1张图片

Lei宝啊:个人主页


 

题目:

描述:

给你单链表头节点 head ,请你反转链表,并返回反转后的链表

接口:

struct ListNode* reverseList(struct ListNode* head){}

示例:

C语言:反转一个单链表_第2张图片

 输入:

head = [1,2,3,4,5]

 输出:

[5,4,3,2,1]



 思路:

先将第一个节点的next指向NULL,同时还要记住原来第一个节点指向的下一个节点的位置

C语言:反转一个单链表_第3张图片

接下来我们希望第二个节点指向第一个节点,所以要用n1记录第一个节点的位置n2记录第二个节点的位置,同时我们还需要一个n3去记录第三个节点的位置

C语言:反转一个单链表_第4张图片

 这样一直往下走,直到到尾,有这样的情况:

C语言:反转一个单链表_第5张图片

所以我们给出的解决方法是当他为空时不往下走

实现代码 :

ListNode* n1 = NULL;
ListNode* n2 = head;
if(n2)
	ListNode* n3 = n2->next;

while (D)
{
	n2->next = n1;
	n1 = n2;
	n2 = n3;
	if (n3)
		n3 = n3->next;
}

return n1;

你可能感兴趣的:(C语言,C语言刷题,数据结构,c语言,开发语言)