单链表的反转/逆置可以利用头插法的原则,将原单链表的每个元素重新插入即可。相应题目可见:反转链表_牛客题霸_牛客网
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
struct ListNode* ReverseList(struct ListNode* head ) {
// head为不带头结点的单链表的头指针
if(head==NULL)//空单链表不处理
{
return head;
}
struct ListNode* pre=head->next;//从原单链表的第一个元素开始
head->next=NULL;//将单链表初始化作为新的单链表
while(pre!=NULL){//开始到表尾依次头插
struct ListNode* node=pre->next;//下个待处理结点
pre->next=head;//头插
head=pre;
pre=node;
}
return head;
}