修改变量名称的小技巧

想要修改多个相同的变量名称,选中想要改名的变量,按alt+shift+R重构,可以一次更改多个相同变量名称

代码

Node.java

package cn.hanquan.test;public class Node
{Node pre;Node next;Object element;// 构造器public Node(Node pre, Node next, Object element){super();this.pre = pre;this.next = next;this.element = element;}public Node(Object obj){this.element = obj;}public Node(){}
}

MyLinkList.java

package cn.hanquan.test;//一个链表类
public class MyLinkList<E> // 泛型
{private Node first;private Node last;public int size;// 增public void add(E element)// 选中想要改名的变量 按alt+shift+R重构 可以一次更改所有相同变量名称{Node node = new Node(element);if (first == null)// 空{node.pre = null;node.next = null;first = node;last = node;}else// 非空{node.pre = last;node.next = null;last.next = node;last = node;}size++;}// 顺序打印public String toString(){StringBuilder ret = new StringBuilder("[");Node cur = new Node();cur = first;if (cur == null)ret.append("]");// 链表为空while (cur != null){ret.append(cur.element.toString());if (cur.next != null)ret.append(", ");elseret.append("]");cur = cur.next;}return ret.toString();}// 逆序打印public String toStringBack(){StringBuilder ret = new StringBuilder("[");Node cur = new Node();cur = last;if (cur == null)ret.append("]");// 链表为空while (cur != null){ret.append(cur.element.toString());if (cur.pre != null)ret.append(", ");elseret.append("]");cur = cur.pre;}return ret.toString();}// 找位置public Node findCur(int index){Node cur = new Node();cur = null;if (index > size && size != 0 || index < 0){System.out.println("索引数字不合法:" + index + "/" + size);}else// 顺序查找{cur = first;for (int i = 0; i < index; i++){cur = cur.next;}}return cur;}// 返回index位置元素public E get(int index){Node cur = findCur(index);return cur == null ? null : (E) cur.element;}// 删public void remove(int index){// 找位置Node cur = new Node();cur = findCur(index);if (first == null)// 链表为空{System.out.println("链表为空,无法删除~");}else if (first == last)// 只有一个节点{last = first = null;}else if (cur == first) // 删除头节点{first = cur.next; // 新的头节点指向新的头cur.next.pre = null; // 新的头前驱为null}else if (cur == last) // 删除尾节点{last = cur.pre;// 新的尾节点指向新的尾cur.pre.next = null;// 新的尾后继为null}else // 删除中间节点{cur.pre.next = cur.next;cur.next.pre = cur.pre;}size--;}// 指定位置插入public void add(int index, E element){// 找位置Node cur = new Node();cur = findCur(index);// 插入Node node = new Node(element);if (first == null)// 空{node.pre = null;node.next = null;first = node;last = node;}else if (cur == first)// 头{node.pre = null;node.next = first;first.pre = node;first = node;}else if (cur == last)// 尾{node.next = null;node.pre = last;last.next = node;last = node;}else // 中{cur.pre.next = node;node.pre = cur.pre;node.next = cur;cur.pre = node;}size++;}
}

Main.java

package cn.hanquan.test;public class Main
{public static void main(String[] args){MyLinkList<String> myLinkList = new MyLinkList<String>();// 增加了泛型的链表for (int i = 0; i < 20; i++){myLinkList.add("节点" + i);}/*----------------------------------以下全部用于测试----------------------------------*/// 获取元素并打印System.out.println(myLinkList.toString());for (int i = 0; i + 5 < myLinkList.size; i += 5){System.out.println("位置为" + i + "的元素是" + myLinkList.get(i));}// 删除元素for (int i = 0; i < 8; i++){System.out.println("删除前:" + myLinkList.toString());myLinkList.remove(0);System.out.println("删除后:" + myLinkList.toString() + "\n");System.out.println("逆序:" + myLinkList.toStringBack() + "\n");}// 插入元素myLinkList.add(5, "插" + 5);System.out.println("插入位置" + 5 + myLinkList.toString() + "\n");System.out.println("逆序:" + myLinkList.toStringBack() + "\n");/*----------------------------------以上全部用于测试----------------------------------*/}
}

运行结果

[节点0, 节点1, 节点2, 节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
位置为0的元素是节点0
位置为5的元素是节点5
位置为10的元素是节点10
删除前:[节点0, 节点1, 节点2, 节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点1, 节点2, 节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7, 节点6, 节点5, 节点4, 节点3, 节点2, 节点1]删除前:[节点1, 节点2, 节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点2, 节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7, 节点6, 节点5, 节点4, 节点3, 节点2]删除前:[节点2, 节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7, 节点6, 节点5, 节点4, 节点3]删除前:[节点3, 节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7, 节点6, 节点5, 节点4]删除前:[节点4, 节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7, 节点6, 节点5]删除前:[节点5, 节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7, 节点6]删除前:[节点6, 节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8, 节点7]删除前:[节点7, 节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]
删除后:[节点8, 节点9, 节点10, 节点11, 节点12, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 节点12, 节点11, 节点10, 节点9, 节点8]插入位置5[节点8, 节点9, 节点10, 节点11, 节点12, 插5, 节点13, 节点14, 节点15, 节点16, 节点17, 节点18, 节点19]逆序:[节点19, 节点18, 节点17, 节点16, 节点15, 节点14, 节点13, 插5, 节点12, 节点11, 节点10, 节点9, 节点8]

【Java数据结构】链表的增、删、返回指定位置元素(添加泛型)相关推荐

  1. Java数据结构链表面试题 作者:哇塞大嘴好帥(哇塞大嘴好帅) --持续更新

    作者:哇塞大嘴好帥(哇塞大嘴好帅) Java数据结构链表面试题 4.1.查询链表有效数据个数 //判断有效数据个数 public int validDate(){//创建临时变量NodeDate no ...

  2. 猴子选大王 java_基于java数据结构链表写的猴子选大王

    [实例简介] 基于java数据结构链表写的猴子选大王,其实就是一个约瑟夫环问题,采用java数据结构链表写的.有点小问题.当输入一只猴子,报数为1时删除会出错.没有实现动态显示猴子的添加和删除. [实 ...

  3. 【字符串操作之】返回指定位置的字符和Unicode 字符代码 根据unicode返回字符→→charAt、charCodeAt和fromCharCode...

    //charAt和charCodeAt分别返回指定位置处的字符和字符对应的unicode码 var str:String="abcdefg"; var str2=str.charA ...

  4. JS之返回指定位置字符的charAt方法

    作用:charAt() 方法可返回指定位置的字符,返回的字符是长度为 1 的字符串 语法:stringObject.charAt(index) 参数:必需.表示字符串中某个位置的数字,即字符在字符串中 ...

  5. 顺序表-顺序表的基本操作(初始化+指定位置元素值 + 用元素值求下标)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 一.初始化顺序表算法: vo ...

  6. C语言练习7—一维数组删除指定位置元素

    题目 在一维数组删除指定位置元素,现定义第一个元素位置为1,一维数组元素个数不确定,需要动态输入,并返回删除元素后的数组以及被删除的元素. 例如输入数组个数为n = 4:将要删除的数组元素位置是2: ...

  7. java单链表 提供增删改查_java实现单链表增删改查的实例代码详解

    package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class node { private e e; //数据data private node next ...

  8. java数据结构-链表详解

    文章目录 1.数据结构-链表详解 1.1单链表 1.1.1单链表节点的尾部添加 1.1.2单链表节点的自动排序添加 1.1.3单链表节点的修改 1.1.4单链表节点的删除 1.2单链表面试题 1.2. ...

  9. 【Java数据结构[链表--单向链表]】

    单向链表 链表是以节点的方式来存储的,是链式存储 每个节点包含一个数据域用来保存当前节点的数据,一个next域用于指向下一个节点 单链表结构示意图: 单链表内存示意图: 代码实现: //链表 clas ...

最新文章

  1. ensp 路由表_华为模拟器ensp——静态路由实验
  2. sql server两种分页方法
  3. c语言eof_C语言 技能提升 系列文章(十)错误处理
  4. spring boot+mybatis 多数据源切换
  5. 抖音python广告_抖音上好看的小姐姐,Python给你都下载了
  6. 小程序获取StorageSync时候的坑
  7. python打开.data_DataX初体验-python命令启动以及纯java启动
  8. 实例变量和局部变量区别
  9. nodejs的req取参req.body,req.params,req.query
  10. UnityShader5:基本内置变量
  11. gdal库读取tif影像坐标
  12. h3c Telnet配置实验
  13. 为什么计算机安装不了程序,小U讲解电脑为什么安装不了软件
  14. 网易邮箱服务器怎么注册,免费网易域名邮箱申请教程(图)
  15. 云时代的“双态IT”运维思路
  16. 计算机怎么安错误,电脑安装软件时提示安装过程出错系统设置未被修改怎么办...
  17. 甲骨文公司总裁Larry Ellison在耶鲁大学的演讲
  18. 购物网站的商品推荐算法有哪些?
  19. 计算机房电源引入方式,(完整版)通信机房电源计算公式.pdf
  20. win10无法安装提示磁盘布局不受UEFI固件支持的解决方法

热门文章

  1. java定时增量同步,一种可配置的定时数据同步方法与流程
  2. NVIDIA AGX Xavier环境配置
  3. Web开发-Django模型层
  4. amd处理器更新zen4服务器芯片,AMD更新CPU、GPU路线图:Zen4架构与硬件光追可期
  5. 【数据结构】哈夫曼树与哈夫曼编码
  6. NYOJ516(优化)
  7. 玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
  8. 趣谈设计模式 | 适配器模式(Adapter):如何让现存对象适用于新的环境?
  9. Linux网络编程 | 并发模式:半同步/半异步模式、领导者/追随者模式
  10. 用Python实现冒泡排序