题目:
翻转一个链表
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
思路:
翻转链表最简单的方式是改变链的链接顺序,用三个指针来改变这个顺序。一个指针是前一个节点,一个指针是后一个节点,一个记录后一个节点的后一个节点,保证链表不丢失。把后一个节点的next变成前一节地址。
代码:
class ListNode {
public:
int val;
ListNode *next;
ListNode(int val) {
this->val = val;
this->next = NULL;
}
}
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The new head of reversed linked list.
*/
ListNode *reverse(ListNode *head) {
// write your code here
ListNode *prev=NULL;
while(head!=NULL)
{
ListNode *temp=head->next;
head->next=prev;
prev=head;
head=temp;
}
return prev;
}
};
这个题不是太难,但是很锻炼思维。尤其是prev从NULL开始,从这个题开始挺脑洞大开的,也让我收获到很多。