题目
Reverse Linked List
Reverse a singly linked list.
标签
Linked List
难度
简单
分析
题目意思是将一个单链表逆序。解题思路是将第二个元素开始的next指针,重新指向前一个元素,即将第二个元素依此插入到表头。比如第三个指针的next原来是指向第四个元素,现在就要将第三个元素的next指向第二个元素。最后需要注意的是head节点的指向。
C代码实现
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* t;
struct ListNode* p, * q;
if(!head || !head->next)
return head;
p = head;
q = head->next;
while(q)
{
t = q->next;
q->next = p;
p = q;
q = t;
}
head->next = NULL;
head = p;
return head;
}