206-反转链表
leetcode题解——反转链表
题目如下
反转一个单链表。
解题思路
- 如果为空链表,直接返回
- 否则,设置两个指针p和q,用来辅助结点摘除和指向下一节点
- 首先将第一个结点的指针域置空
- 用q来指示当前操作的结点,重复以下动作
- p指向q的下一个结点,防止断链
- 将结点q置为链表的第一个结点
- 改变head指针,使head始终指向链表的头结点
- q指向下一个待操作的结点
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//链表反转
struct ListNode* reverseList(struct ListNode* head){
if(head==NULL){
return head;
}else{
struct ListNode*p=head;
struct ListNode*q=head->next;
p->next=NULL;
while(q){
p=q->next;
q->next=head;
head=q;
q=p;
}
return head;
}
}

浙公网安备 33010602011771号