(剑指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 // 次方.不得使用库函数,同时不需 ...
随机推荐
- Spring中@Resource与@Autoware
问题 这其实就是@Autoware与@Resource没有正确的使用,这个错误是因为wmPoiOplogService这个变量装配方式是@Resource,按照@Resource的按名字查找的方式,并 ...
- hadoop完全分布式模式的安装和配置
本文是将三台电脑用路由器搭建本地局域网,系统为centos6.5,已经实验验证,搭建成功. 一.设置静态IP&修改主机名&关闭防火墙(all-root)(对三台电脑都需要进行操作) 0 ...
- YII Framework学习教程-YII的日志
日志的作用(此处省略1000字) YII中的日志很好很强大,允许你把日志信息存放到数据库,发送到制定email,存放咋文件中,意见显示页面是,甚至可以用来做性能分析. YII中日志的基本配置:/yii ...
- jQuery插件开发的模式和结构
jQuery插件开发 一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法:另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通 ...
- Delphi 7使用自定义图标关联文件类型
Delphi 7使用自定义图标关联文件类型 5.2 Delphi编程(40) 版权声明:本文为博主原创文章,未经博主允许不得转载. 在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可 ...
- 【转】Linux下创建、销毁、使用 SWAP
转自:http://blog.csdn.net/wxqee/article/details/7970110 创建swap文件方法 1) 创建一个足够大的文件 dd if=/dev/zero of=/l ...
- DTD 简介
文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构.DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 内部的 DOCTYPE 声明 假如 DT ...
- strtok和strtok_r
1.strtok()函数的用法 函数原型:char *strtok(char *s, const char *delim); Function:分解字符串为一组字符串.s为要分解的字符串,delim为 ...
- struts2传递List对象(复合对象)
1.前台jsp界面: <%@ page language="java" contentType="text/html; charset=utf-8" pa ...
- linux下安装subversion出现libtool: link: only absolute run-paths are allowed
configure时加上 --with-apache-libexecdir=/usr/local/apache