LinkedList和单双链表。

ops/2024/11/14 13:36:30/

java中提供了双向链表的动态数据结构 --- LinkedList,它同时也实现了List接口,可以当作普通的列表来使用。也可以自定义实现链表

单向链表:一个节点=本节点数据+下个节点地址

给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。


public class Lee {private Node head1;private Node head2;Lee(){this.head1= new Node(0);this.head2= new Node(0);}public void  insert1(int data){Node newNode = new Node(data);Node curNode = head1;while (curNode.next!=null){curNode=curNode.next;}curNode.next=newNode;}public void  insert2(int data){Node newNode = new Node(data);Node curNode = head2;while (curNode.next!=null){curNode=curNode.next;}curNode.next=newNode;}static class Node{public int value;public Node next;Node(int data){this.value=data;this.next=null;}}public void Plink(Node head1,Node head2){while (head1!=null&&head2!=null){if (head1.value<head2.value)head1=head1.next;else if (head1.value>head2.value)head2=head2.next;else{System.out.println(head1.value+" ");head1=head1.next;head2=head2.next;}}}public static void main(String[] args) {Lee lee = new Lee();lee.insert1(1);lee.insert1(3);lee.insert1(4);lee.insert2(4);lee.insert2(5);lee.insert2(6);lee.Plink(lee.head1, lee.head2);}
}

双向链表:一个节点=上个节点地址+本节点数据+下个节点地址

如:定义两个函数,实现在双向链表的头部及尾部插入节点


public class Lee {private Node head;Lee(){this.head= new Node(0);}public void  insertHead(int data){Node newNode = new Node(data);newNode.next=head;head.pre=newNode;head=newNode;}public void  insertTail(int data){Node newNode = new Node(data);Node current = head;while (current.next!=null){current=current.next;}current.next=newNode;newNode.pre=current;}public void printList(Node head) {Node current = head;// 从头到尾打印链表while (current != null) {System.out.print(current.value + " -> ");current = current.next;}System.out.println("null"); // 表示链表结尾}static class Node{public int value;public Node pre;public Node next;Node(int data){this.value=data;this.pre=null;this.next=null;}}public static void main(String[] args) {Lee lee = new Lee();lee.insertTail(2);lee.insertTail(3);lee.insertTail(4);lee.insertHead(4);lee.printList(lee.head);}
}


http://www.ppmy.cn/ops/133283.html

相关文章

《人工智能网络安全现状(2024)》深度解读:机遇、挑战与应对策略

在当今数字化浪潮汹涌澎湃的时代&#xff0c;人工智能&#xff08;AI&#xff09;与网络安全已然深度交融&#xff0c;二者相互作用所塑造的发展态势正深刻重塑着我们的信息安全格局。《人工智能网络安全现状&#xff08;2024&#xff09;》这份报告恰似一盏明灯&#xff0c;为…

关于 JavaScript 对象不变性,你了解吗?

1. 基本概念 在 JavaScript 语言中&#xff0c;不变性&#xff08;Immutability&#xff09;是一个重要的概念。它指的是对象一旦创建后其状态就不能改变。在函数式编程中&#xff0c;不变性是实现纯函数的基础&#xff0c;因为它可以确保函数的输出只依赖于输入参数&#xff…

家里电脑ip地址怎么设置?详细指导

在家庭网络环境中&#xff0c;正确设置电脑的IP地址是确保设备能够顺利接入互联网以及实现局域网内设备间通信的基础步骤。对于大多数家庭用户而言&#xff0c;IP地址的设置通常是通过路由器自动分配&#xff08;动态IP&#xff09;来完成的&#xff0c;这得益于DHCP&#xff0…

RabbitMQ 与 PHP Swoole 实现

RabbitMQ 与 PHP Swoole 的结合实现 一、概述 RabbitMQ 是一个开源的消息队列中间件&#xff0c;允许通过异步消息传递来解耦应用程序的各个部分。Swoole 是一个高性能的 PHP 扩展&#xff0c;支持异步编程和协程&#xff0c;适用于构建高并发的网络服务。将 RabbitMQ 与 Swo…

使用R语言survminer获取生存分析高风险和低风险的最佳截断值cut-off

使用R语言进行Cox比例风险模型分析和最佳截断值寻找 引言 在生存分析中&#xff0c;Cox比例风险模型是一种常用的统计方法&#xff0c;用于评估多个变量对生存时间的影响。在临床研究中&#xff0c;我们经常需要根据某些连续变量的预测值来对患者进行分组&#xff0c;以便更好…

XXL-TOOL v1.3.1 发布 | Java工具类库(Excel、Pipeline、Fiber…)

Release Notes 1、【强化】已有工具能力完善&#xff0c;包括&#xff1a;StringTool、GsonTool 等&#xff1b; 2、【新增】新增多个工具类模块&#xff0c;包括&#xff1a;FreemarkerTool、CookieTool、PageModel、CacheTool、StreamTool 等&#xff1b; 3、【完善】工具类…

OceanBase JDBC (Java数据库连接)的概念、分类与兼容性

本章将介绍 OceanBase JDBC的 概念与分类&#xff0c;已帮助使用 JDBC 的用户及技术人员更好的 了解JDBC&#xff0c;以及 OceanBase JDBC在与 MySQL 及 Oracle 兼容性方面的相关能力。 一、JDBC 基础 1.1 JDBC 的概念 JDBC 一般指 Java 数据库连接。Java 数据库连接&#xf…

ES5 和 ES6 数组的操作方法

在 JavaScript 中&#xff0c;数组的操作方法非常丰富&#xff0c;包括 ES5 和 ES6 中引入的各种方法。以下是对这些数组方法的详细介绍&#xff0c;分为 ES5 和 ES6。 目录 一、ES5 数组方法 1. 创建数组 2. 数组增加元素 3. 数组删除元素 4. 查找元素 5. 遍历数组 6.…