java-链表-练习:
package com.etc.liebiao;
/**
* 链表的简单联系与理解
*/
public class LbMonkey {
public int id ; // 编号
public String name; // 名字
public LbMonkey next; // 它表示后面的猴子
public LbMonkey(){}
// ctrl + o
public LbMonkey(int id ,String name){
this.id = id;
this.name = name;
}
// 重写父类方法:最终输出的格式:
@Override
public String toString() {
return String.format("(%s,%s)",name, id);
}
}
package com.etc.liebiao;
/**
* 相对于数组,链表的特点:
* 1.可以无限多节点,长度不限制;
* 2.无论插入还是删除,并不需要挪动位置;
*
* 有头节点需要在最前面创建一个假节点:83行
*/
public class LbMonkeyM {
public static void main(String[] args) {
// 4只猴子(四个有效的节点)
LbMonkey m1 = new LbMonkey(100, "yuanyuan");
LbMonkey m2 = new LbMonkey(101, "fangfang");
LbMonkey m3 = new LbMonkey(102, "yuyu");
LbMonkey m4 = new LbMonkey(103, "yuayua");
// 串起来,每个猴子握住前者的尾巴
m1.next = m2;
m2.next = m3;
m3.next = m4;
m4.next = null;
// 遍历一个列表需要知道第一节点,便可以遍历全部;(没有假节点时候的遍历)
// LbMonkey node = m1;
// while (node != null){
// System.out.println(node);
// node = node.next;
// }
// 队伍新插入一个节点 m5;
LbMonkey m5 = new LbMonkey(105, "hh");
// 如果重新插入最后节点时,需要找到最后一个节点,再选择插入。
//
// LbMonkey tail = m1;
// while (true){
// // 如果tail 后面的那个猴子为空,则他就是最后一个猴子。所以跳出循环;
// if (tail.next == null) break;
// tail = tail.next;
// }
// tail.next = m5; // 把m5 追加到 tail的末尾
// 如果插入第一个之后,第二个之前;
// LbMonkey head = m1;
// m5.next = head.next; // 把第一个后面的猴子m 5放在插入猴子后面
// m1.next = m5; // 再把 m 5 猴子放在第一个猴子后面
// 如果插入固定位置插入102 后面:
// LbMonkey head1 = m1;
// while ( head1 != null){
// if ( head1.id == 102){
// m5.next = head1.next;
// head1.next = m5;
// break;
// }
// head1 = head1.next;
// }
// 删除节点(此时删除的是:id= m5 的节点)
// LbMonkey h = m1;
// while (h != null){
// if (h.id == 105){
// h.next = m5.next;
// break;
// }
// h = h.next;
// }
/**
* 加上假节点以后操作:
*/
// 创建一个假节点,作为链表的头节点
LbMonkey hea = new LbMonkey(0,"石猴");
hea.next = m1;
// 增加节点(直接加到假加点后面)
// LbMonkey m6 = new LbMonkey(106, "huahua");
// m6.next = hea.next; // 增加时:把假节点之前后面的那个“hea.next” 放在m6节点后面。
// hea.next = m6; // 然后把 节点m6 放在 假节点后面。“hea.next”
// 第一种:删除节点(加上假节点后的删除节点): 自创
// LbMonkey h = hea.next;
// while (h != null) {
// if (h.id == 106) {
// hea.next = h.next;
// break;
// }
// h = h.next;
// }
// 第二种:删除节点(加上假节点后的删除节点): 师
LbMonkey H = hea;
while ( H.next != null){
if (H.next.id == 106){
H.next = H.next.next;
break;
}
H = H.next;
}
// 加上假节点以后的遍历和不加假节点的遍历不同;(有假节点时候的遍历)
LbMonkey node = hea.next;
while (node != null) {
System.out.println(node);
node = node.next;
}
System.out.println("exit");
}
}
注意:当把列表作为容器的时候:(示例)
package com.etc.liebiao;
/**
* 容器类: 一般不需要知道里面是如何实现的,链表是一种实现容器的方法,确切的说是一种数据结构。
*/
public class MonkeyList {
private LbMonkey head = new LbMonkey(0,"石猴");
// 添加一个对象
public void add(LbMonkey m){
m.next = head.next;
head.next = m;
}
// 按编号查询
public LbMonkey get( int id){
LbMonkey m = head.next;
while (m != null) {
if ( m.id == id){
return m;
}
m = m.next;
}
return null;
}
}
package com.etc.liebiao;
/**
* @Date 2020/10/30 19:08
* @CREATE BY sinosoftcs
* @DESCRIPTION TODO
* @MODIFIED
*/
public class MonkeyM {
public static void main(String[] args) {
// 4只猴子(四个有效的节点)
LbMonkey m1 = new LbMonkey(100, "yuanyuan");
LbMonkey m2 = new LbMonkey(101, "fangfang");
LbMonkey m3 = new LbMonkey(102, "yuyu");
LbMonkey m4 = new LbMonkey(103, "yuayua");
MonkeyList monkey = new MonkeyList();
monkey.add(m1);
monkey.add(m2);
monkey.add(m3);
monkey.add(m4);
LbMonkey who = monkey.get(103);
if (who != null){
System.out.println("找到 :" + who);
}else {
System.out.println("没有找到id为103的猴子!");
}
System.out.println("exit");
}
}
桫哥-GOlang基础-14图形用户界面 多年互联网从业经验;有丰富的的...
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid "inside jobs" where employees collaborate with gambler...
一、参考文章UBUNTU /HOME扩容二、注意事项启动的时候,u盘的ubuntu版本需要和原来系统中的ubuntu版本一致解锁根据空白盘符与其相临近盘符,进行互相调换,直至调至home所在盘的前面或后面。(移动的时候,条形的框的长度不要改动,直接拖)扩容(长度拉满即为扩容)...
参考这篇文章: http://www.concretepage.com/java/jdk-8/java-8-reflection-access-to-parameter-names-of-method-and-constructor-with-maven-gradle-and-eclipse-using-parameters-compiler-argument#maven按照文章里给的demo
最近按照TensorFlow官网给的在windows下利用Anaconda安装tensorflow的方法,遇到不少问题,安装过程具体如下:(1)以管理员身份运行Anaconda Prompt(2)输入以下命令创建tensorflow环境conda create -n tensorflow pip python=3.5以这种创建环境的方式安装tensorflow可以在Anaco...
简介 我们在使用Ubuntu系统有时可能需要看Ubuntu上的仿真界面和可视化数据,可能会有这样一个需求:使用Windows系统接入Ubuntu,本文章提供一种方法,使用Windows自带的远程桌面+Ubuntu安装VNC解决问题。Ubuntu上的配置1.下载配置dconfsudo apt-get install xrdp vnc4server xbase-clients dconf-editor 注意上面红框的路径,把下面两项设为OFF。2. 设置Ubuntu系统 在Sharing里面打
for(var i = 0;i < row.length;i++){ var row = row[i]; $('#detailsTable2 tr').each(function(i){ // 遍历 tr // $(this).children('td').each(function(j){ // 遍历 tr 的各个 td // }); ...
1、cylinder函数:绘制三维圆柱图2、用法说明:(1)[x,y,z]=cylinder 函数返回一半径和高度都为1的圆柱体x,y,z轴的坐标值,圆柱体沿其周长有20个等距分布的点(2)[x,y,z]=cylinder(r) 函数一个半径为r、高度为1的圆柱体的x,y,z轴的坐标值,圆柱体沿其周长有20个等距分布的点(3)[x,y,z]=cylinder(r,n) 函数一个半径为r、高度为1的...
git clone支持https和git(即ssh)两种方式下载源码:当使用git方式下载时,如果没有配置过ssh key,则会有如下错误提示:下面就介绍一下如何配置git的ssh key,以便我们可以用git方式下载源码。首先用如下命令(如未特别说明,所有命令均默认在Git Bash工具下执行)检查一下用户名和邮箱是否配置(github支持我们用用户名或邮箱登录):git config --global --list 笔者的机器显示信息如下(已配置):如未配置,则执.
注: Ubuntu 18.04自带Python3!!! 1 查看Python版本先查看系统中有那些Python版本:$ ls /usr/bin/python*/usr/bin/python /usr/bin/python2-config /usr/bin/python3m/usr/bin/python2 /usr/bin/pyth...
HTML超文本标记语言(HyperTextMark-upLanguage)大道废,有仁义;智慧出,有大伪;六亲不和,有孝慈;国家昏乱,有忠臣。————《道德经》第十八章...
线上连接错误解决方法:1.开放服务器端口2.用IP地址加端口连接websocket = new WebSocket(`ws://119.23.41.159:9985/api/bigdata`)