Reverse Linked List 递归非递归实现
单链表反转--递归非递归实现
Java
接口: ListNode reverseList(ListNode head)
非递归的实现
有2种,参考
- 头结点插入法
- 就地反转
递归的实现
- Divide the list in two parts - first node and rest of the linked list.
- Call reverse for the rest of the linked list.
- Link rest to first.
- Fix head pointer
- Time Complexity: O(n)
- Space Complexity: O(1)
用Java
实现,第4步要稍微变通一下:用一个全局头结点dummy指针来保存新链表的head。 需要一个辅助的函数void reverseList(ListNode head)
(不带返回值的函数)
ListNode dummy = new ListNode(-1);
public ListNode reverseListRecu(ListNode head) {
if (head == null)
return head;
reverse(head);
return dummy.next;
}
private void reverse(ListNode head){
ListNode first = head;
ListNode rest = first.next;
if(rest == null) {
dummy.next = first;
return;
}
reverse(rest);
first.next.next = first;
first.next = null;
}
Reverse Linked List 递归非递归实现的更多相关文章
- 【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)
一.搜索二叉树的插入,查找,删除 简单说说搜索二叉树概念: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右 ...
- 全排列问题(递归&非递归&STL函数)
问题描述: 打印输出1-9的所有全排序列,或者打印输出a-d的全排列. 思路分析: 将每个元素放到余下n-1个元素组成的队列最前方,然后对剩余元素进行全排列,依次递归下去. 比如:1 2 3 为例首先 ...
- 二叉树的先序、中序以及后序遍历(递归 && 非递归)
树节点定义: class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } 递归建立二 ...
- 二叉树——遍历篇(递归/非递归,C++)
二叉树--遍历篇 二叉树很多算法题都与其遍历相关,笔者经过大量学习.思考,整理总结写下二叉树的遍历篇,涵盖递归和非递归实现. 1.二叉树数据结构及访问函数 #include <stdio.h&g ...
- 树的广度优先遍历和深度优先遍历(递归非递归、Java实现)
在编程生活中,我们总会遇见树性结构,这几天刚好需要对树形结构操作,就记录下自己的操作方式以及过程.现在假设有一颗这样树,(是不是二叉树都没关系,原理都是一样的) 1.广度优先遍历 英文缩写为BFS即B ...
- java:合并两个排序的链表(递归+非递归)
//采用不带头结点的链表 非递归实现 public static ListNode merge(ListNode list1,ListNode list2){ if(list1==null) retu ...
- 二叉树的递归,非递归遍历(java)
import java.util.Stack; import java.util.HashMap; public class BinTree { private char date; private ...
- 二叉树的递归,非递归遍历(C++)
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易 ...
- 递归/非递归----python深度遍历二叉树(前序遍历,中序遍历,后序遍历)
递归代码:递归实现很简单 '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None self.righ ...
随机推荐
- Bash中的$符号
脚本名称:$0 PID:$$ 参数个数:$# 脚本返回值:$? 第x个参数:$x 第10个以上的参数加大括号:${10} 所有参数:$@ #!/bin/bash echo "The prog ...
- 过滤器(filter)实现用户登录拦截
过滤器(filter)实现用户登录拦截 >>>>>>>>>>>>>>>>>>>> ...
- 传送门(portal)
Linux: #RHEL/CentOS/fedora系列为主 Basis: Commands: Services: SpamAssassin: Tomcat: Hadoop: Hive: Pig: Z ...
- C#百分比式布局
图一:原始窗口 图二:放大窗口 实现:窗体内添加一个panel1(Dock:Left),在窗体空余部分添加第二个panel2(Dock:Fill),窗体分为两部分. 在panel2内添加一个panel ...
- 在后台CS文件里面,隐藏和显示Repeater里面控件
<asp:Repeater ID="Repeater1" runat="server"><ItemTemplate><asp:Pa ...
- SQL 中case when then else 用法
SQL如下: SELECT DISTINCTsy_haken_type,sy_sagyo_type,sy_kokyaku_cdFROm tbl_syukeiWHERE (sy_sagyo_ymd be ...
- file的name值
在picturelibrary中取一张jpg文件, 其Name值为 "NoThumbnail.jpg",注意后面的.jpg foreach (SPFile ...
- Android开发必备:颜色选择
AA 指定透明度. 00 是完全透明. FF 是完全不透明.超出取值范围的值将被恢复为默认值. ffff00 ffff33 ffff66 ffff99 ffffcc ffffff ffcc0 ...
- vc调用BCB的dll 参数传递 报错
可能原因: 调用方式约定不一致. 函数调用约定如下: 1. __cdecl:C 和 C++ 程序的缺省调用规范. 2. __stdcall:标准调用约定(即WINAPI调用约定),也就是pascal调 ...
- iOS-UI控件精讲之UILabel
UILabel(标签)应该是iOS中最基本的一个控件了,也是使用频率最高的,经常用来展示一段不可编辑的文本. UILabel继承于UIView,下面是一些常用的属性,包含继承于UIView的属性. 1 ...