(剑指Offer)面试题16:反转链表
题目:
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
链表的定义如下:
struct ListNode{
int val;
ListNode* next;
};
思路:
反转链表,需要调整结点的next指针,例如a->b->c,需要调整为a<-b<-c,只要将当前结点的next指针指向前一结点即可,如b->next=a,需要一个变量来保存前一结点;
但调整当前结点的next指针之后,就无法获取原链表的下一结点了,因此需要一个临时变量来保存当前结点的下一结点。
依次遍历整个链表,调整每个结点的next指针,最后返回原链表的最后一个结点指针即可。
代码:
struct ListNode{
int val;
ListNode* next;
};
ListNode* ReverseList(ListNode* pHead){
ListNode* pReverseHead;
ListNode* pCur=pHead;
ListNode* pPrev=NULL;
ListNode* tmp;
while(pCur!=NULL){
tmp=pCur->next;
if(tmp==NULL)
pReverseHead=pCur;
pCur->next=pPrev;
pPrev=pCur;
pCur=tmp;
}
return pReverseHead;
}
在线测试OJ:
http://www.nowcoder.com/books/coding-interviews/75e878df47f24fdc9dc3e400ec6058ca?rp=1
AC代码:
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* tmp;
ListNode* pCur=pHead;
ListNode* pPrev=NULL;
while(pCur){
tmp=pCur->next;
pCur->next=pPrev;
pPrev=pCur;
pCur=tmp;
}
return pPrev;
}
};
(剑指Offer)面试题16:反转链表的更多相关文章
- 剑指Offer:面试题16——反转链表(java实现)
问题描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点.链表结点如下: public class ListNode { int val; ListNode next = n ...
- 剑指Offer - 九度1518 - 反转链表
剑指Offer - 九度1518 - 反转链表2013-11-30 03:09 题目描述: 输入一个链表,反转链表后,输出链表的所有元素.(hint : 请务必使用链表) 输入: 输入可能包含多个测试 ...
- 剑指Offer面试题:14.链表的倒数第k个节点
PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善. 一.题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题 ...
- 剑指offer 面试题35.复杂链表的复制
时间O(N),空间O(N) /* struct RandomListNode { int label; struct RandomListNode *next, *random; RandomList ...
- C++版 - 剑指offer 面试题16:反转链表(Leetcode 206: Reverse Linked List) 题解
面试题16:反转链表 提交网址: http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId= ...
- 【剑指offer 面试题16】反转链表
思路: 用三个指针preNode.curNode.nextNode完成. #include <iostream> using namespace std; struct ListNode ...
- 剑指Offer面试题16(Java版):反转链表
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点. 解决与链表相关的问题总是有大量的指针操作.而指针操作的代码总是easy出错的. 非常多的面试官喜欢出链表相关的问题,就是 ...
- 剑指offer(15)反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素. 题目分析 至少需要三个指针pPre(指向前一个结点).pCurrent(指向当前的结点,在代码中就是pHead).pPnext(指向后一个结点 ...
- 剑指offer十五之反转链表
一.题目 输入一个链表,反转链表后,输出链表的所有元素. 二.思路 详细分析见代码注释 三.代码 public class Solution { public ListNode Reverse ...
- 剑指offer——面试题16:数值的整数次方
// 面试题16:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方.不得使用库函数,同时不需 ...
随机推荐
- SPY++的使用
百度百科Spy++ 使用的是VS2010.net自带的功能,可以从开始菜单中打开.
- tcp协议中mss的理解
在介绍MSS之前我们必须要理解下面的几个重要的概念.<blockquote>MTU: Maxitum Transmission Unit 最大传输单元MSS: Maxitum Segmen ...
- Apache Conf/Vost/xx.conf 文件配置
#监听8086端口Listen 8086 NameVirtualHost *:8086#保持绝对一致 <VirtualHost *:> ServerName localhost Serve ...
- Cadence Allegro导网表的错误问题解决
在Allegro导入网表的时候,有时候会出现这样一个错误问题,如下: ------ Oversights/Warnings/Errors ------ #1 ERROR(SPMHNI-235): ...
- 【转】 IOS 项目配置--构建输出DIR
原文网址:http://blog.csdn.net/fengsh998/article/details/8868871 通常在情一般都不建议使用绝对路径,因为写死之后,换环境,换平台,又要重新修改路径 ...
- 所有 HTTP 状态代码及其定义
所有 HTTP 状态代码及其定义. 代码 指示 2xx 成功 200 正常:请求已完成. 201 正常:紧接 POST 命令. 202 正常:已接受用于处理,但处理尚未完成. 20 ...
- HP-Socket
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.D ...
- Delphi Val函数
在这里Val和iif都是你所用的数据库中的函数在delphi中Val是一个将字符串转换为数字的函数,Val(S; var V; var Code: Integer)第一个参数是要转换的字符串,第二个参 ...
- 中文+django1.9+python3.5一些注意点
1.模板html文件里一定要加 <!DOCTYPE html><meta http-equiv="Content-type" content="text ...
- 黑马程序员——OC的内存管理学习小结
内存管理在Objective-C中的重要性就像指针在C语言中的重要程序一样. 虽然作为一门高级语言,但OC却没有内存回收机制.这就需要开发者来对动态内存进行管理.OC中内存管理的范围是:任何继承了NS ...