本次笔记内容:
线性结构习题.1 什么是抽象链表
线性结构习题.2 链表逆转算法
线性结构习题.3 测试数据

文章目录

  • (抽象链表)没有指针的语言,可以表达链表么?
  • Reversing Linked List
    • 输入样例
    • 单链表的逆转
    • 伪代码实现
  • 测试数据常见问题(e.g.边界测试)

(抽象链表)没有指针的语言,可以表达链表么?

对于抽象的链表而言,存在两个部分即可:

  • 存数据的部分
  • 存指针(下一个结点地址)的部分

Reversing Linked List

本题目来自一道微软面试题。

输入样例

Sample Input:
00100 6 4 // 单链表头结点的位置,下面会给多少个头结点,需要逆转的结点的个数
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

输入样例所表达的链表如上图。

单链表的逆转

在链表前加一个头结点,会令后续操作简单许多。

上图中,最终效果如下面的那个。

链表中,换指针常常涉及到丢掉指针对象的问题,因此注意tmp的使用。

需要一个计数器,重复k步,停下。

伪代码实现

Ptr Reverse(Ptr head, )
{new = head->next;old = new->next;while (){tmp = old->next;old->next = new;new = old;old = tmp;}head->next->next = old;return new;
}

加入计数器后,代码如下:

Ptr Reverse(Ptr head, int K)
{cnt = 1;new = head->next;old = new->next;while (cnt < K){tmp = old->next;old->next = new;new = old;old = tmp;cnt++;}head->next->next = old;return new;
}

测试数据常见问题(e.g.边界测试)

本题中,要加强本地测试数据属性。

  1. 有尾巴不反转;
  2. 有地址取到上下界(00000,99999);
  3. 正好全反转;
  4. K=N全反转;
  5. K=1不用反转;
  6. 最大(最后剩K-1不反转)、最小N;
  7. 有多余结点。

2到6称为边界测试。

【数据结构笔记14】微软面试经典 - 逆转链表问题(Reversing Linked List)相关推荐

  1. 数据结构与算法(二)单链表(Singly linked list)

    数据结构与算法(二)单链表(Singly linked list) 链表(Linked list) Python完整功能实现 LeetCode思想实践: 链这个东西大家一定都不陌生, 脖子上有项链, ...

  2. 四道微软面试经典算法题

    比较经典的四个算法题,目前只收集到相关的思路和个别题目的解法,不断更新中 1.一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现.0是例外,可以反复出现. 请设计一个算法, ...

  3. 【数据结构笔记07】不带头结点链表实现多项式相加、相乘

    本次笔记内容: 2.4 多项式的加减运算实现 P24 1.题意理解与多项式表示 P25 2.程序框架及读入多项式 P26 3.加法.乘法运算及多项式输出 文章目录 多项式加法运算 采用不带头结点的单项 ...

  4. 面试经典:链表中倒数第k个结点?如何从大量数据中找出高频词?

    记录两道面试题: 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(单向链表) 拿到这个问题的时候自然而然会想到让链表从末尾开始next   K-1 次不就是第K-1个节点了么,但是必须要注意一 ...

  5. 学习数据结构笔记(14) --- [图]

    B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法) 文章目录 1.图的概述 (1)无向图 (2)有向图 (3)带权图 (4) 图的表示方式 2. 用代码实现无向带权 ...

  6. 经典算法学习——逆转链表

    链表在数据结构中是一种非常重要的线性数据结构,也是各类面试笔试中常常涉及的问题.其中最常见的一个问题就是"输入一个链表的头结点,从尾到头反过来打印出每个节点的值",简单说就是逆转链 ...

  7. 鸿钧老祖 数据结构笔记01:编程面试过程中常见的10大算法(java)

    以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...

  8. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

  9. 18、数据结构笔记之十八链表实现稀疏矩阵

    18.数据结构笔记之十八链表实现稀疏矩阵 "必须如蜜蜂一样,采过许多花,才能酿出蜜来." 上篇中实现了栈在多项式实现中的例子,再来看下稀疏矩阵通过链表方式实现. 关键字:十字链表存 ...

最新文章

  1. java中相同名字怎么声明,Java中,同一个类中的两个或两个以上的方法可以有同一个名字,只要他们的参数声明不同即可...
  2. TF-IDF(term frequency–inverse document frequency)
  3. linux read while 变量运算
  4. 【Thymeleaf】格式化数字
  5. 港中文开源基于PyTorch的多任务人脸识别框架
  6. python单例模式控制成只初始化一次,常规型的python单例模式在新式类和经典类中的区别。...
  7. 终端服务器超出了最大允许连接数
  8. 数据工作本质:从业务中来,到业务中去
  9. 基于单片机无线防丢报警器设计过程分享
  10. 目标检测的图像特征提取之(一)HOG特征
  11. SpringBoot2.0系列教程(四)Springboot框架自定义消息转换器
  12. 从QQtabBar看css命名规范BEM
  13. 走出国门,在安防赛道海外本地化部署已成必然
  14. 阿里云迁移工具推荐最佳实践:Hyper-V虚拟化迁移到阿里云
  15. ubuntu2004上使用python以及postgresql处理数据 - 针对comp3311
  16. Centos自动登录
  17. C#实现发送短信到手机
  18. 安卓第三方SDK打包成uni-app插件
  19. 计算机的纸牌游戏打不开啥原因,win10系统游戏纸牌打不开解决方法 - Win10专业版官网...
  20. java如何创建一个文本框_如何创建绑定到对象的文本框

热门文章

  1. 遥感导论网课_甘肃农业大学2019年地理信息科学专业专升本招生 专业课考试大纲...
  2. ./configure:command not found 解决方法
  3. Visual Studio 重新生成解决方案 无反映
  4. 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
  5. 解决ajax无法给js全局变量赋值的问题
  6. nginx 反向代理时丢失端口的解决方案(转)
  7. Android通知栏Notification弹出横幅显示的解决方法
  8. 安装Sql server 2008遇到无法安装.net 3.5的问题解决办法
  9. 在OS X 10.9上安装Java(Mavericks)
  10. Laravel 5无法打开所需的bootstrap /../ vendor / autoload.php