题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
*
* @param pHead ListNode类
* @return ListNode类
*/
struct ListNode* ReverseList(struct ListNode* pHead ) {
// 首先定义一个指针p指向phead,用于遍历后续节点,同时要还需要定义一个指针L
struct ListNode *p=pHead,*L,*head=NULL;
while(p!=NULL){
//像系统申请一片内存空间,用于存放L节点
L=(struct ListNode *)malloc(sizeof(struct ListNode));
//新的节点的数据域
L->val=p->val;
//判断新建链表是否为空,
if(head==NULL){
//一开始链表为空,让新的链表的首节点指向L,注意下面两行代码顺序不要颠倒
L->next=NULL;
head=L;
}else{
//新节点指针域指向首节点,然后让指向首节点的指针指向这个新的节点;
L->next=head;
head=L;
}
p=p->next;
}
return head;
}