【数据结构笔记14】微软面试经典 - 逆转链表问题(Reversing Linked List)
本次笔记内容:
线性结构习题.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.边界测试)
本题中,要加强本地测试数据属性。
- 有尾巴不反转;
- 有地址取到上下界(00000,99999);
- 正好全反转;
- K=N全反转;
- K=1不用反转;
- 最大(最后剩K-1不反转)、最小N;
- 有多余结点。
2到6称为边界测试。
【数据结构笔记14】微软面试经典 - 逆转链表问题(Reversing Linked List)相关推荐
- 数据结构与算法(二)单链表(Singly linked list)
数据结构与算法(二)单链表(Singly linked list) 链表(Linked list) Python完整功能实现 LeetCode思想实践: 链这个东西大家一定都不陌生, 脖子上有项链, ...
- 四道微软面试经典算法题
比较经典的四个算法题,目前只收集到相关的思路和个别题目的解法,不断更新中 1.一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现.0是例外,可以反复出现. 请设计一个算法, ...
- 【数据结构笔记07】不带头结点链表实现多项式相加、相乘
本次笔记内容: 2.4 多项式的加减运算实现 P24 1.题意理解与多项式表示 P25 2.程序框架及读入多项式 P26 3.加法.乘法运算及多项式输出 文章目录 多项式加法运算 采用不带头结点的单项 ...
- 面试经典:链表中倒数第k个结点?如何从大量数据中找出高频词?
记录两道面试题: 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(单向链表) 拿到这个问题的时候自然而然会想到让链表从末尾开始next K-1 次不就是第K-1个节点了么,但是必须要注意一 ...
- 学习数据结构笔记(14) --- [图]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法) 文章目录 1.图的概述 (1)无向图 (2)有向图 (3)带权图 (4) 图的表示方式 2. 用代码实现无向带权 ...
- 经典算法学习——逆转链表
链表在数据结构中是一种非常重要的线性数据结构,也是各类面试笔试中常常涉及的问题.其中最常见的一个问题就是"输入一个链表的头结点,从尾到头反过来打印出每个节点的值",简单说就是逆转链 ...
- 鸿钧老祖 数据结构笔记01:编程面试过程中常见的10大算法(java)
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...
- 数据结构与算法学习笔记之 提高读取性能的链表(上)
数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...
- 18、数据结构笔记之十八链表实现稀疏矩阵
18.数据结构笔记之十八链表实现稀疏矩阵 "必须如蜜蜂一样,采过许多花,才能酿出蜜来." 上篇中实现了栈在多项式实现中的例子,再来看下稀疏矩阵通过链表方式实现. 关键字:十字链表存 ...
最新文章
- java中相同名字怎么声明,Java中,同一个类中的两个或两个以上的方法可以有同一个名字,只要他们的参数声明不同即可...
- TF-IDF(term frequency–inverse document frequency)
- linux read while 变量运算
- 【Thymeleaf】格式化数字
- 港中文开源基于PyTorch的多任务人脸识别框架
- python单例模式控制成只初始化一次,常规型的python单例模式在新式类和经典类中的区别。...
- 终端服务器超出了最大允许连接数
- 数据工作本质:从业务中来,到业务中去
- 基于单片机无线防丢报警器设计过程分享
- 目标检测的图像特征提取之(一)HOG特征
- SpringBoot2.0系列教程(四)Springboot框架自定义消息转换器
- 从QQtabBar看css命名规范BEM
- 走出国门,在安防赛道海外本地化部署已成必然
- 阿里云迁移工具推荐最佳实践:Hyper-V虚拟化迁移到阿里云
- ubuntu2004上使用python以及postgresql处理数据 - 针对comp3311
- Centos自动登录
- C#实现发送短信到手机
- 安卓第三方SDK打包成uni-app插件
- 计算机的纸牌游戏打不开啥原因,win10系统游戏纸牌打不开解决方法 - Win10专业版官网...
- java如何创建一个文本框_如何创建绑定到对象的文本框
热门文章
- 遥感导论网课_甘肃农业大学2019年地理信息科学专业专升本招生 专业课考试大纲...
- ./configure:command not found 解决方法
- Visual Studio 重新生成解决方案 无反映
- 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
- 解决ajax无法给js全局变量赋值的问题
- nginx 反向代理时丢失端口的解决方案(转)
- Android通知栏Notification弹出横幅显示的解决方法
- 安装Sql server 2008遇到无法安装.net 3.5的问题解决办法
- 在OS X 10.9上安装Java(Mavericks)
- Laravel 5无法打开所需的bootstrap /../ vendor / autoload.php