数据结构与算法之反转单向链表和双向链表


目录

  1. 反转单向链表和双向链表

1. 反转单向链表和双向链表

  1. 题目描述

  2. 代码实现


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. 编译结果

数据结构与算法之反转单向链表和双向链表相关推荐

  1. 《恋上数据结构第1季》单向链表、双向链表

    链表(Linked List) 链表的接口设计 单向链表(SingleLinkedList) 获取元素 – get() 清空元素 – clear() 添加元素 – add(int index, E e ...

  2. 结构与算法(03):单向链表和双向链表

    本文源码:GitHub·点这里 || GitEE·点这里 一.链表简介 1.链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列 ...

  3. JavaScript数据结构(3):单向链表与双向链表

    翻译:疯狂的技术宅 说明:本文翻译自系列文章<Data Structures With JavaScript>,总共为四篇,原作者是在美国硅谷工作的工程师 Cho S. Kim .这是本系 ...

  4. 数据结构与算法(C++)– 链表(Link)

    数据结构与算法(C++)– 链表(Link) 1.基础知识 表:把具有相同类型的序列 A0, A1, A2, - An 称为表 .n 是表的大小,n=0 称为空表. A0没有前驱,An没有后继. 前驱 ...

  5. python中的列表是采用链式结构实现的_Python数据结构与算法之列表(链表,linked list)简单实现...

    Python数据结构与算法之列表(链表,linked list)简单实现 Python 中的 list 并不是我们传统(计算机科学)意义上的列表,这也是其 append 操作会比 insert 操作效 ...

  6. 链表问题4——反转单向链表

    题目 实现反转单向链表的函数 要求 如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1). 源码 public class Node{public int value;public ...

  7. 算法相关(2)-单向链表

    单向链表 创建单向链表 //节点的构造函数 function Node(value){this.value=value;this.next=null; }//单向链表的构造函数 function Li ...

  8. 左神算法:反转单向和双向链表(Java版)

    本题来自左神<程序员面试代码指南>"反转单向和双向链表"题目. 题目 分别实现反转单向链表和反转双向链表的函数. 如果链表长度为N,时间复杂度要求为O(N),额外空间复 ...

  9. 【数据结构与算法】通俗易懂说链表

    一:概述 链表(Linked list)由一些节点组成,物理存储非连续的线性表.其中每个节点都会存储下个节点的指针,由于实际存储空间不连续,对链表插入节点,删除节点可以达到O(1)的复杂度,但是对一个 ...

最新文章

  1. 窗体的ControlBox属性
  2. JSONP实现原理-简析
  3. Win 10 终于干趴了 Win 7
  4. Fedora7 安装完全过程
  5. 【Docker】elasticsearch 监控工具 elasticsearch-HQ
  6. C/C++ 变量的初始化
  7. 谈区块链的时候别忘记了“新零售”
  8. python字符串方法总结_python字符串使用方法总结
  9. 服务于win10的telnet的简易聊天服务器(单进程)
  10. 京东健康打开医疗服务的“脑机”接口
  11. 开放api接口平台:appid、appkey、appsecret
  12. JS设计模式(二)-Revealing Module(揭示模式)
  13. 【深度学习】基于MindSpore和pytorch的Softmax回归及前馈神经网络
  14. Taro下拉刷新,上拉加载更多
  15. 攻防世界 MISC 新手练习区 writeup 001-006
  16. VMware虚拟机运行时报The CPU has been disabled by the guest operating system错误的解决方法
  17. 矩阵模板(矩阵快速幂算法用法)
  18. Fileupload使用方法
  19. 求50以内的全部素数
  20. SpringBoot整合!docker更新镜像名称

热门文章

  1. zabbixproxy安装
  2. Spring Boot 定时任务
  3. 【算法】K-Means聚类算法(k-平均或k-均值)
  4. mjExtention
  5. Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View...
  6. SQL ROW_NUMBER() OVER函数的基本用法用法
  7. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
  8. 牛客 - 第k小数(线性寻找第 k 小数)
  9. 安川机器人焊枪切换设定方法_安川机器人参数更改方法
  10. 第一类Stirling数和第二类Stirling