java单链表代码实现
用惯了C++,java写起来果然不太爽。。。不废话了,上代码。。。
package javaInnerclassDemo;
class Link{
class Node{
private String name;
private Node next;
public Node(String name){
this.name=name;
}
public void setname(String name){
this .name = name;
}
public String getname(){
return this.name;
}
public void addnode(Node newnode){
if(this.next==null)
this.next=newnode;
else
this.next.addnode(newnode);
}
public void printnode(){
if(this.next!=null){
System.out.print(this.name);
System.out.print("——>");
}
else
System.out.println(this.name);
if(this.next!=null)
this.next.printnode();
}
public boolean searchnode(String name){
if(this.name.equals(name)){
return true ;
}
else{
if(this.next!=null){
return this.next.searchnode(name) ;
}
else{
return false ;
}
}
}
public void deleteNode(Node preNode,String name){
if(this.name.equals(name)){
preNode.next = this.next ;
}else{
this.next.deleteNode(this,name) ;
}
}
}
private Node root;
public void add(String name){
Node newnode = new Node(name);
if(this.root==null)
this.root=newnode;
else
this.root.addnode(newnode);
}
public void print(){
if(this.root!=null){ //之所以在外部判断,因为printnode需要迭代
this.root.printnode();
}
else
System.out.println("链表为空,无法打印!");
}
public boolean search(String name){
if(this.root.searchnode(name)==true)
return true;
else
return false;
}
public void delete(String name){
if(this.search(name)){ // 判断此节点是否存在
if(this.root.name.equals(name)){
if(this.root.next!=null){
this.root = this.root.next ; // 改变根节点
}
else{
this.root = null ; // 取消
}
}
else{
if(this.root.next!=null){
this.root.next.deleteNode(root,name) ;
}
}
}
else
System.out.println("所要删除节点不存在!");
}
}
public class LinklistDemo {
public static void main(String[] args) {
Link l = new Link();
l.add("walkthehorizon");
l.add("已经");
l.add("无人");
l.add("能挡");
l.add("了");
l.add("么");
System.out.println("打印链表");
l.print();
System.out.println("查找链表");
System.out.println(l.search("walkthehorizon"));
System.out.println(l.search("放逐之刃"));
System.out.println("删除节点");
l.delete("么");
l.print();
}
}
java的单链表实现核心在于多层次迭代。
java单链表代码实现的更多相关文章
- Java单链表反转 详细过程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/guyuealian/article/details/51119499 Java单链表反转 Java实 ...
- Java单链表反转图文详解
Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...
- java 单链表 练习
练习一下java单链表的简单习题 package com.test1; import java.util.Stack; public class SingleListDemo { /** * 返回单链 ...
- java单链表常用操作
总结提高,与君共勉 概述. 数据结构与算法亘古不变的主题,链表也是面试常考的问题,特别是手写代码常常出现,将从以下方面做个小结 [链表个数] [反转链表-循环] [反转链表-递归] [查找链表倒数第K ...
- JAVA单链表的实现-不带头结点但带有尾指针
1,本程序实现了线性表的链式存储结构.实现的链表带有两个指针,一个始终指向链表中的第一个结点,另一个指针始终指向链表中的最后一个结点. 之所以设置尾指针,是因为,在插入元素到链表中的末尾时,可以通过尾 ...
- java 单链表反转
最近与人瞎聊,聊到各大厂的面试题,其中有一个就是用java实现单链表反转.闲来无事,决定就这个问题进行一番尝试. 1.准备链表 准备一个由DataNode组成的单向链表,DataNode如下: pub ...
- JAVA单链表的实现-不带头结点且没有尾指针
本程序采用JAVA语言实现了线性表的链式实现.首先定义了线性表的接口ListInterface,然后LList类实现了ListInterface完成了链表的实现. 本实现中,链表是不带表头结点的,且有 ...
- Java单链表简单实现* @version 1.0
package com.list; /** * 数据结构与算法Java表示 * @version 1.0 * @author 小明 * */ public class MyLinkedList { p ...
- 基于python实现单链表代码
1 """ 2 linklist.py 3 单链表的构建与功能操作 4 重点代码 5 """ 6 7 class Node: 8 " ...
随机推荐
- 将控制台程序做成windows服务
一:添加windows服务 二:修改XXXInstaller1的StartType=Automatic,修改ProcessInstaller1的Account=LocalSystem 三:在progr ...
- Jexus下配置多个站点
一.在jexus中一个配置文件就是一个站点,有多少个配置文件就可以创建多少个站点 配置文件所在的位置 在siteconf中有一个最基本的配置 default ##################### ...
- 关系数据库标准语言SQL的基本问答
1 .试述 sQL 语言的特点. 答: (l)综合统一. sQL 语言集数据定义语言 DDL .数据操纵语言 DML .数据控制语言 DCL 的功能于一体. (2)高度非过程化.用 sQL 语言进行数 ...
- AlertDialog基本用法详解
AlertDialog简单介绍: AlertDialog可以在当前活动界面弹出一个对话框,用于提示一些重要信息或是警告内容. AlertDialog置于所有页面元素之上,能够屏蔽其他控件的交互. 由于 ...
- Flex4开发笔记(与JAVA交互)
(由于本人也是第一次接触flex开发,因此将开发过程中问题记录留档) 一.数据交换过程 借助BlazeDS可以实现flex与java之间的数据交互,大体流程如下: 1.导入blazeds的文件(配置w ...
- 不能取组织ID
应用 Oracle Purchasing 层 Level Function 函数名 Funcgtion Name PO_POXBWVRP 表单名 Form Name POXBWVRP 说明 Des ...
- delphi 关于命名
请告别 TMyXXX 的命名方法吧... 程序名: Demo.exe 窗体:TFrmDemo ,窗体文件 uFrmDemo.Pas DataModule: TDMDemo, 窗体文件 uDMDemo. ...
- 对Msn协议的一点点研究
这个也是好奇msn的协议还是2011年的时候写的, 就在网上找啊找啊, 可惜要不是不能用就是C++代码还有就是不完整, 到最后我也没弄成功,只到了下面这步就挂掉了...... 登录成功<=SBS ...
- Android 模拟系统事件(三)
简介 Android系统是基于Linux内核的,而Linux内核继承和兼容了丰富的Unix系统进程间通信(IPC)机制.Binder其实也不是Android提出来的一套新的进程间通信机制,它是基于Op ...
- Dreamweaver中打开CodeSmith文件
电脑环境:Windows2008+Dreamweaver 8英文版本 问题描述:Dreamweaver中默认打开文档时不支持打开CodeSmith模板文件对应的.cst后缀名文件,截图如下: 解决步骤 ...