题目描述:
解题思路:先申请一个头节点,将头节点与链表连接起来,然后将链表从第一个节点断开,然后依次将后续节点头插进入链表。
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
//形参合理判断
//assert(head!=NULL);
if(head==NULL)
{
return head;
}
//申请一个头节点
struct ListNode head_1;
head_1.next=head;
//申请一个节点,保存将要断开的链
struct ListNode* p=head->next;
//断链
head->next=NULL;
//将断开的节点依次头插进链表中
struct ListNode* q=NULL;
while(p!=NULL)
{
q=p->next;//保存要插入的节点的后继
p->next=head_1.next;//连接后面
head_1.next=p;//连接前面
p=q;//后移
}
return head_1.next;
}