翻转链表
2017-03-30 23:25
225 查看
问题描述:
翻转一个链表
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
解题思路:
定义一个空节点,让第一个节点指向空,这时第一个节点变成了新链表的尾节点,再将第二个节点之后的链存起来,让第二个节点指向第一个节点,直至使最后一个节点指向倒数第二个节点。
代码实现:
/**
* Definition of ListNode
*
* 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 *l=NULL;
while(head!=NULL){
ListNode *temp=head->next;
head->next=l;
l=head;
head=temp;
}
return l;
}
};
解题感悟:
注意翻转时要记得保存后面的节点,否则会丢失数据。
翻转一个链表
样例
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
解题思路:
定义一个空节点,让第一个节点指向空,这时第一个节点变成了新链表的尾节点,再将第二个节点之后的链存起来,让第二个节点指向第一个节点,直至使最后一个节点指向倒数第二个节点。
代码实现:
/**
* Definition of ListNode
*
* 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 *l=NULL;
while(head!=NULL){
ListNode *temp=head->next;
head->next=l;
l=head;
head=temp;
}
return l;
}
};
解题感悟:
注意翻转时要记得保存后面的节点,否则会丢失数据。
相关文章推荐
- "数据结构翻转课堂"答疑实录——链表
- 35. 翻转链表
- 翻转链表
- 链表翻转的图文讲解(递归与迭代两种实现)
- LintCode-----36.翻转链表 II
- 链表相邻元素翻转
- 链表逆序和链表翻转
- 双向链表翻转
- 35. 翻转链表(reverse-linked-list)(c++)----lintcode面试题之链表
- 36 - 翻转链表 II
- 35. 翻转链表
- 链表的翻转合并创建
- 算法题——翻转链表中的一段
- 链表翻转
- C++循环链表中进行元素的翻转
- PAT (Advanced Level) 1074. Reversing Linked List (25) 翻转链表
- 双链表翻转算法
- Reverse Linked List II 局部翻转链表@LeetCode
- 翻转链表
- 链表翻转(升级版)【每日一题】