手搓链表(java)(不完整)

手搓链表(java)(不完整)


文章目录

  • 手搓链表(java)(不完整)
  • 前言
  • 一、代码
    • 1.MyLinkedList类:
    • 2.测试类:
  • 总结


前言

在这里插入图片描述



在这里插入图片描述


提示:以下是本篇文章正文内容:

一、代码

1.MyLinkedList类:

package com.itheima.demo6;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class MyLinkedList<E> {private int size;//定义一个内部类,作为链表的结点//如果定义私有的,需要添加get,set方法public static class Node<E> {E data;Node<E> next;public Node(E data, Node<E> next) {this.data = data;this.next = next;}}//add方法:可以让用户添加链表的结点,//直到用户输入exit,则返回链表的头结点。public Node<E> add() {Node<E> head = null;Scanner sc = new Scanner(System.in);while (true) {System.out.println("请你输入结点的值:");String data = sc.next();if (data.equals("exit")) break;if (head == null) {head = new Node(data, null);size++;} else {//尾插法插入结点Node<E> temp = head;while (temp.next != null) temp = temp.next;//循环结束的时候,temp.next == null//意思是temp指向最后一个结点temp.next = new Node(data, null);size++;}}return head;}//reverse方法,接收head,left,right,按上面要求进行反转。public Node<E> reverse(Node<E> head, int left, int right) {//输入异常检测:if (head == null || left < 1 || left > size || right < 1|| right > size || left == right || left > right) {return head;}//1.找到左节点的起始地址//2.将[left, right]的元素存入集合,倒着遍历,插入到原来的链表当中Node<E> first = head;Node<E> mark = null;//记入左节点List<E> data = new ArrayList<>();int index = 0;//遍历链表:while (head != null) {index++;if (index == left) mark = head;if (index >= left && index <= right)data.add(head.data);//list集合的add方法if (index == right) break;head = head.next;}//倒序遍历data集合,插入到原来的链表当中for (int i = data.size() - 1; i >= 0; i--) {E e = data.get(i);mark.data = e;mark = mark.next;}return first;}//forEach方法,遍历链表。public void forEach(Node<E> head) {//如果链表为空if (head == null) {System.out.println(head);return;}while (head != null) {System.out.print(head.data + " ");head = head.next;}}}

2.测试类:

package com.itheima.demo6;public class Test {public static void main(String[] args) {//测试类://例:1 2 3 4 5,left = 2, right = 4//输出:1 4 3 2 5MyLinkedList<String> list = new MyLinkedList<>();MyLinkedList.Node<String> head = list.add();list.forEach(head);MyLinkedList.Node<String> head2 = list.reverse(head, 2, 4);System.out.println();list.forEach(head2);}
}

总结

提示:这里对文章进行总结:

可以与手写ArrayList集合做对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pip包安装用国内镜像源

一&#xff1a;临时用国内源 可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple 例如&#xff1a;pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider&#xff0c;这样就会从清华这边的镜像去安装pyspider库 清华&#xff1a;https://py…

LeetCode_876(链表的中间结点)

//双指针//时间复杂度O(n) 空间复杂度O(1)public ListNode middleNode(ListNode head) {ListNode slowhead,fast head;while (fast!null && fast.next!null){slow slow.next;fast fast.next.next;}return slow;} 1->2->3->4->5->null 快指针移动两个…

数据结构——队列(包括循环队列)——Java版

目录 队列介绍&#xff1a; 基本概念&#xff1a; 应用&#xff1a; Java实现示例&#xff1a; 循环队列的Java实现&#xff1a; 队列介绍&#xff1a; 队列&#xff08;Queue&#xff09;是一种常见的数据结构&#xff0c;它按照先进先出&#xff08;FIFO&#xff0c;Fi…

Linux中的shell脚本之流程控制循环遍历

3 条件判断 4 流程控制语句 1&#xff09;if 语句 案例&#xff0c;用户输入用户名和密码&#xff0c;判断用户名是否是admin,密码是否是123,如果正确&#xff0c;则显示登录成功 首先我创建了shell文件&#xff0c;touch getpawer 其中getpawer 是我自己命的名 #!/bin/bas…

Linux-4 gcc和makefile

Linux编译器-gcc/g使用 1.设计样例 c语言&#xff1a;linux中用的stdc99版本--可能会出现其他问题 c&#xff1a;Linux中用的stdc11--使用c11版本 Linux没有文件格式的区分&#xff0c;但是编译器区分 gcc编译器的文件格式是filename.c g编译器的文件格式是filename.cc或者fil…

C语言--指针4

大家节日快乐&#xff0c;难得的假期&#xff0c;祝你们玩得开心。 今天总结了指针第四部分。 1.回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指…

公约数(acwing每日一题)

题目描述&#xff1a; 给定两个正整数 a 和 b。 你需要回答 q个询问。 每个询问给定两个整数 l,r&#xff0c;你需要找到最大的整数 x&#xff0c;满足&#xff1a; x 是 a 和 b的公约数。l≤x≤r。 输入格式&#xff1a; 第一行包含两个整数 a,b。 第二行包含一个整数 …

蓝桥杯练习笔记(十七)

蓝桥杯练习笔记&#xff08;十七&#xff09; 一、 输入样例 7 7 1000001 0100010 0010100 0001AAA 00010A0 00010A0 00010A0蓝桥官网题解&#xff1a; 该题解是用了三个循环分别对三个方向的相同字符的长度进行统计&#xff0c;找出最大长度&#xff0c;最后对找出的最长Y进…

做好产品定位的3个重点

产品定位对于项目而言至关重要&#xff0c;正确的产品定位有助于项目锁定目标市场&#xff0c;精准满足客户需求。通过差异化产品策略&#xff0c;让产品在众多竞品中脱颖而出&#xff0c;形成独特竞争优势&#xff0c;从而有助于产品价值的实现。 因此做好产品定位迫在眉睫&am…

在Go语言中如何调试

调试是确定程序为何不像预期那样工作的过程。程序不像预期那样工作的迹象有很多,包括编译错误、运行阶段错误、文件权限错误以及数据不正确等。调试是程序员经常需要做的工作,而要理解Go语言,就必须明白它提供了哪些工具。使用Go语言开发复杂的程序时,调试将成为日常工作中…

POI、EasyExcel操作Excel表格详解

POI、EasyExcel 文章目录 POI、EasyExcel1.简介2.结构3.POI-Excel写1.基本操作2.大文件写入HSSF3.大文件写入XSSF4.大文件写入SXSSF 4.POI-Excel读1.基本操作2.数据类型3.计算公式类型数据读取 5.EasyExcel写1.基本写入操作2.日期、数字或者自定义格式转换3.列宽、行高 6.EasyE…

软件杯 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

【Linux】从零认识文件操作

送给大家一句话&#xff1a; 要相信&#xff0c;所有的不美好都是为了迎接美好&#xff0c;所有的困难都会为努力让道。 —— 简蔓《巧克力色微凉青春》 开始理解基础 IO 吧&#xff01; 1 前言2 知识回顾3 理解文件3.1 进程和文件的关系3.2 文件的系统调用openwrite文件 fd 值…

OpenHarmony实战:小型系统平台驱动移植

在这一步&#xff0c;我们会在源码目录//device/vendor_name/soc_name/drivers目录下创建平台驱动。 建议的目录结构&#xff1a; device ├── vendor_name │ ├── drivers │ │ │ ├── common │ │ │ ├── Kconfig # 厂商驱动内核菜单入口 │ …

七大开源基金会联合制定符合 CRA 法案的共同标准

欧洲议会上个月通过的《欧洲网络弹性法案》(CRA) 制定通用规范和标准 Apache 软件基金会、Blender 基金会、Eclipse 基金会、OpenSSL 软件基金会、PHP 基金会、Python 软件基金会 和 Rust 基金会 这项工作由 Eclipse 基金会牵头&#xff0c;旨在建立基于现有开源最佳实践的安全…

yolov8训练流程

训练代码 from ultralytics import YOLO# Load a model model YOLO(yolov8n.yaml) # build a new model from YAML model YOLO(yolov8n.pt) # load a pretrained model (recommended for training) model YOLO(yolov8n.yaml).load(yolov8n.pt) # build from YAML and tr…

巧用lambda表达式构建各种“树”

简述 利用jdk8 lambda表达式分组函数&#xff0c;可巧妙构建各种树&#xff0c;比如地区树&#xff0c;可以利用其多线程特性充分利用CPU提高性能。 分组函数&#xff1a;Collectors.groupingBy() 开起多线程&#xff1a;list.parallelStream() 实例 以地区为例&#xff1…

9.图像中值腐蚀膨胀滤波的实现

1 简介 在第七章介绍了基于三种卷积前的图像填充方式&#xff0c;并生成了3X3的图像卷积模板&#xff0c;第八章运用这种卷积模板进行了均值滤波的FPGA实现与MATLAB实现&#xff0c;验证了卷积模板生成的正确性和均值滤波算法的MATLAB算法实现。   由于均值滤波、中值滤波、腐…

leet hot 100-13 最大子数组和

53. 最大子数组和 原题链接思路代码 原题链接 leet hot 100-10 53. 最大子数组和 思路 生成一个数字来记录last 表示前面数字全部之和与0取最大值 如果大于0 就加上如果不大于0 就不管 从当前位置从新开始遍历计算 时间复杂度O(n) 空间复杂度(1) 代码 class Solution {…

JVM剖析

0.前言 Java 是当今世界使用最广泛的技术平台之一。使用 Java 或 JVM 的一些技术包括&#xff1a; Apache spark用于大数据处理&#xff0c;数据分析在JVM上运行;用于数据流的Apache NiFi在内部使用的也是 JVM;现代 Web 和移动应用程序开发中使用的React native使用 的也包含…