给你单链表的头节点
head
,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2:
输入:head = [1,2] 输出:[2,1]示例 3:
输入:head = [] 输出:[]
头插法:
在插入时,新的结点插入到当前链表的表头。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* list,*p;
list=(struct ListNode*)malloc(sizeof(struct ListNode));
list->next=NULL;//先建立一个带头结点的单链表
p=head;
struct ListNode* s;
while(p!=NULL)
{
//头插法
s=(struct ListNode*)malloc(sizeof(struct ListNode));
s->val=p->val;
s->next=list->next;
list->next=s;
p=p->next;
}
return list->next;
}