数据结构与算法之反转单向链表和双向链表
数据结构与算法之反转单向链表和双向链表
目录
- 反转单向链表和双向链表
1. 反转单向链表和双向链表
题目描述
代码实现
public class Code_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {this.value = data;}}public static Node reverseList(Node head) {Node pre = null;Node next = null;while (head != null) {next = head.next;head.next = pre;pre = head;head = next;}return pre;}public static class DoubleNode {public int value;public DoubleNode last;public DoubleNode next;public DoubleNode(int data) {this.value = data;}}public static DoubleNode reverseList(DoubleNode head) {DoubleNode pre = null;DoubleNode next = null;while (head != null) {next = head.next;head.next = pre;head.last = next;pre = head;head = next;}return pre;}public static void printLinkedList(Node head) {System.out.print("Linked List: ");while (head != null) {System.out.print(head.value + " ");head = head.next;}System.out.println();}public static void printDoubleLinkedList(DoubleNode head) {System.out.print("Double Linked List: ");DoubleNode end = null;while (head != null) {System.out.print(head.value + " ");end = head;head = head.next;}System.out.print("| ");while (end != null) {System.out.print(end.value + " ");end = end.last;}System.out.println();}public static void main(String[] args) {Node head1 = new Node(1);head1.next = new Node(2);head1.next.next = new Node(3);printLinkedList(head1);head1 = reverseList(head1);printLinkedList(head1);DoubleNode head2 = new DoubleNode(1);head2.next = new DoubleNode(2);head2.next.last = head2;head2.next.next = new DoubleNode(3);head2.next.next.last = head2.next;head2.next.next.next = new DoubleNode(4);head2.next.next.next.last = head2.next.next;printDoubleLinkedList(head2);printDoubleLinkedList(reverseList(head2));}
}
- 编译结果
数据结构与算法之反转单向链表和双向链表相关推荐
- 《恋上数据结构第1季》单向链表、双向链表
链表(Linked List) 链表的接口设计 单向链表(SingleLinkedList) 获取元素 – get() 清空元素 – clear() 添加元素 – add(int index, E e ...
- 结构与算法(03):单向链表和双向链表
本文源码:GitHub·点这里 || GitEE·点这里 一.链表简介 1.链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列 ...
- JavaScript数据结构(3):单向链表与双向链表
翻译:疯狂的技术宅 说明:本文翻译自系列文章<Data Structures With JavaScript>,总共为四篇,原作者是在美国硅谷工作的工程师 Cho S. Kim .这是本系 ...
- 数据结构与算法(C++)– 链表(Link)
数据结构与算法(C++)– 链表(Link) 1.基础知识 表:把具有相同类型的序列 A0, A1, A2, - An 称为表 .n 是表的大小,n=0 称为空表. A0没有前驱,An没有后继. 前驱 ...
- python中的列表是采用链式结构实现的_Python数据结构与算法之列表(链表,linked list)简单实现...
Python数据结构与算法之列表(链表,linked list)简单实现 Python 中的 list 并不是我们传统(计算机科学)意义上的列表,这也是其 append 操作会比 insert 操作效 ...
- 链表问题4——反转单向链表
题目 实现反转单向链表的函数 要求 如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1). 源码 public class Node{public int value;public ...
- 算法相关(2)-单向链表
单向链表 创建单向链表 //节点的构造函数 function Node(value){this.value=value;this.next=null; }//单向链表的构造函数 function Li ...
- 左神算法:反转单向和双向链表(Java版)
本题来自左神<程序员面试代码指南>"反转单向和双向链表"题目. 题目 分别实现反转单向链表和反转双向链表的函数. 如果链表长度为N,时间复杂度要求为O(N),额外空间复 ...
- 【数据结构与算法】通俗易懂说链表
一:概述 链表(Linked list)由一些节点组成,物理存储非连续的线性表.其中每个节点都会存储下个节点的指针,由于实际存储空间不连续,对链表插入节点,删除节点可以达到O(1)的复杂度,但是对一个 ...
最新文章
- 窗体的ControlBox属性
- JSONP实现原理-简析
- Win 10 终于干趴了 Win 7
- Fedora7 安装完全过程
- 【Docker】elasticsearch 监控工具 elasticsearch-HQ
- C/C++ 变量的初始化
- 谈区块链的时候别忘记了“新零售”
- python字符串方法总结_python字符串使用方法总结
- 服务于win10的telnet的简易聊天服务器(单进程)
- 京东健康打开医疗服务的“脑机”接口
- 开放api接口平台:appid、appkey、appsecret
- JS设计模式(二)-Revealing Module(揭示模式)
- 【深度学习】基于MindSpore和pytorch的Softmax回归及前馈神经网络
- Taro下拉刷新,上拉加载更多
- 攻防世界 MISC 新手练习区 writeup 001-006
- VMware虚拟机运行时报The CPU has been disabled by the guest operating system错误的解决方法
- 矩阵模板(矩阵快速幂算法用法)
- Fileupload使用方法
- 求50以内的全部素数
- SpringBoot整合!docker更新镜像名称
热门文章
- zabbixproxy安装
- Spring Boot 定时任务
- 【算法】K-Means聚类算法(k-平均或k-均值)
- mjExtention
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View...
- SQL ROW_NUMBER() OVER函数的基本用法用法
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
- 牛客 - 第k小数(线性寻找第 k 小数)
- 安川机器人焊枪切换设定方法_安川机器人参数更改方法
- 第一类Stirling数和第二类Stirling