LeetCode206. Reverse Linked List I
原地址
题目描述
Reverse a singly linked list.
思路
1 可以用最简单的方法就是把重新建立一个链表,将原链表的元素从头到尾依次插到新链表的头部即可。
2 链表原地反转
代码实现
1.
if(head == NULL)
return NULL;
ListNode* newhead=NULL;
while(head){
ListNode* tmp = new ListNode(0);
tmp->val=head->val;
tmp->next=newhead;
newhead=tmp;
head=head->next;
}
return newhead;
2.
if(head==NULL || head->next == NULL)
{
return head; /*链表为空或只有一个元素则直接返回*/
}
ListNode *s = NULL,
*p = head,
*q = head->next;
while(q != NULL)
{
s = q->next;
q->next = p;
p = q;
q = s;
}
/*此时q指向原始链表最后一个元素,也是逆转后的链表的表头元素*/
head->next= NULL; /*设置链表尾*/
head= p; /*调整链表头*/
return head;