要求:

Give a Θ(n)-time nonrecursive procedure that reverses a singly linked list of n
elements. The procedure should use no more than constant storage beyond that
needed for the list itself.

中心思想是同时取出并保存链表中的连续三个元素(previous, current, after),并翻转前两个,然后每次将这三个指针依次向后移一位并重复翻转前两个,直至结束

伪代码:

LIST-REVERSE(L)

1 previous = L.head

2 if previous.next ≠ NIL

3  current = previous.next

4 else return

5 if current.next ≠ NIL

6  after = current.next

7 else L.head = current

8  current.next = previous; previous.next = NIL

9  return

10 current.next = previous; previous.next = NIL

11 while after.next ≠ NIL

12  previous = current

13  current = after

14  after = after.next

15  current.next = previous

16 after.next = current

17 L.head = after

18 return

存储空间开销-三个指针

CLRS10.2-7练习 - 翻转单向列表的更多相关文章

  1. python 单向循环列表

    # -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/23 下午 6:54 # 单向循环列表 # 单向循环列表与单向列表的不同之处在于最后 ...

  2. python 基础 列表

    1.列表list()方法用于将元组转换为列表,[]组成,中间可以放很多内容,每一项使用逗号隔开,列表中可以放置任何数据类型的数据.注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放括号 ...

  3. 用Python写单向链表和双向链表

    链表是一种数据结构,链表在循环遍历的时候效率不高,但是在插入和删除时优势比较大. 链表由一个个节点组成. 单向链表的节点分为两个部分:存储的对象和对下一个节点的引用.注意是指向下一个节点. 而双向链表 ...

  4. JavaScript实现单向链表

    JavaScript 本身提供了十分好用的数据类型,以满足大家的日常使用.单靠 Array  和 Object 也的确足够应付日常的绝大部分需求,这也导致了很多前端er对数据结构这一块不是十分的了解. ...

  5. python之列表、元组

    Day 2-Morning 创建列表 创建列表和创建普通变量一样,用中括号括起一堆数据即可(这里的数据可以是整型.字符串.浮点型...甚至可以包含另一个列表),数据间用逗号隔开. eg:number= ...

  6. python基础四之列表

    列表详解 列表的增删改查! 增加 li = ['zxc', 'is', 'a'] # append 在列表结尾整体添加 修改列表,但是没有返回值 li.append('boy') print(li) ...

  7. Python中list(列表)、dict(字典)、tuple(元组)、set(集合)详细介绍

    更新时间:2019.08.10 更新内容: "2.14加入sorted()函数" "2.3"加入一种删除元素的方法 "二.字典"新增1.5, ...

  8. [LeetCode] 234. Palindrome Linked List 解题思路

    Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...

  9. Python进阶:全面解读高级特性之切片!

    导读:切片系列文章连续写了三篇,本文是对它们做的汇总.为什么要把序列文章合并呢?在此说明一下,本文绝不是简单地将它们做了合并,主要是修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔 ...

随机推荐

  1. luoguP4112 [HEOI2015]最短不公共子串 SAM,序列自动机,广搜BFS

    luoguP4112 [HEOI2015]最短不公共子串 链接 luogu loj 思路 子串可以用后缀自动机,子序列可以用序列自动机. 序列自动机是啥,就是能访问到所有子序列的自动机. 每个点记录下 ...

  2. nginx 配置ssl

    单向SSL配置实例: server{ listen ssl; server_name www..com; root /data/wwwroot/www..com/ ; index index.html ...

  3. pip命令提示unknow or unsupported command install解决方法

    执行pip命令安装模块,提示unknow or unsupported command install 原因: 使用where pip查看, 电脑中装了loadrunner,存在多个pip,不知道使用 ...

  4. Excel 截取字符,判断县区 城市。

    https://jingyan.baidu.com/article/624e7459aa90e434e8ba5a8a.html https://jingyan.baidu.com/article/9f ...

  5. pm2 启动模式 fork 和 cluster 的区别

    fork模式,单实例多进程,常用于多语言混编,比如php.python等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码. 缺点就是单服务器实例容易由于异常会导致服务器实例崩溃. ...

  6. XMLHttpRequest用法介绍

    前言: 传统的Web应用请求服务器返回的一般是是完整的HTML页面,这样往往就需要页面进行刷新操作,不仅耗时而且用户体验度也不好.最典型的代表就是form表单登录操作了.如果登录失败往往是跳转到原网页 ...

  7. 初识RSA

    基础知识:http://www.guideep.com/read?guide=5676830073815040# python实现:https://blog.csdn.net/bian_h_f6127 ...

  8. rpm 打包:ERROR: No build ID note found in xxxx

    网上找修复方法 方法1: define区添加以下这行 %define debug_package %{nil} 参考:https://forums.fedoraforum.org/showthread ...

  9. DB2数据库基础

    一.DB2数据库安装教程 DB2安装教程:https://jingyan.baidu.com/article/e75057f2f59ef9ebc91a8905.html 二.DB2常用命令 1. 打开 ...

  10. HTTPS原理分析

    引言 随着互联网安全意识的普遍提高,对安全要求稍高的应用中,HTTPS的使用是很常见的,所以,无论是即时通讯IM还是其它应用,在网络安全意识增强的今天,很多场景下使用HTTPS是肯定没错的.对于即时通 ...