作者:林子木  博客网址:http://blog.csdn.net/wolinxuebin

參考网址:http://blog.csdn.net/sunsaigang/article/details/5751780

描写叙述:使用java实现简答的单链表的功能

定义了一个MyList类

包括的函数:

getHead()返回头指针。

isEmpty() 推断是否为空;

addFirst(T element)在链表的头部增加元素。

addLast(T element)在链表的尾部增加元。

add(T fix,T element)在指定元素fix后插入新的元素

remove(T element) 删除指定元素

contains(T element)查看是否包括某元素

printList()打印链表。

其它:

使用泛型

程序代码例如以下:

public class MyList{ //使用泛型

/*

* 定义节点类Node

*/

private static class Node{

T element;

Node next;

Node(T element,Node next){ //构造函数

this.element = element;

this.next = next;

}

Node(T element){ //构造函数

this(element,null); //调用上面的构造函数

}

}

//定义MyList成员

private Node head; //定义头结点

/*

*构造函数

*/

MyList(){

head = null;

}

/*

*返回头指针

*/

public Node getHead(){

return head;

}

/*

*查看链表是否为空

*/

public boolean isEmpty(){

return null == head; //推断是否为空

}

/*

*将元素增加链表头

*/

public void addFirst(T element){

if(isEmpty()) head = new Node(element);

else head = new Node(element,head);

}

/*

*将元素增加链表尾

*/

public void addLast(T element){

if(isEmpty()) head = new Node(element);//假设为空

else {

Node node = head; //不为空,就使用查找,知道表尾

while(node.next != null) node = node.next;

node.next = new Node(element);

}

}

/*

*在指定元素后增加新元素

*/

public boolean add(T fix,T element){

if(isEmpty()) return false;

else {

Node node = head; //定义中间变量

while(node.element != fix && null != node.next){//程序跳出条件为1、到表尾 2、找到这个元素

node = node.next; //查找是否含有元素

}

//这里採用直接使用while查找,而推断在while外面。能够加高速度

if(node.element == fix){ //这里首先推断是否找到元素

node.next = new Node(element,node.next) ;//将element插入。并将element的next指向下一个元素

return true;

}

else

return false;

}

}

/*

*删除指定元素

*/

public boolean remove(T element){

if(isEmpty()) return false;

Node node = head; //定义变量pre 和 node

Node pre = null;

while(node.element != element && null != node.next){ //程序跳出条件为1、到表尾 2、找到这个元素

pre = node; //保存前面的变量

node = node.next; //指向下一个元素

}

if(node.element == element){

if(null == pre) //假设是指定元素是第一个元素

head = head.next;

else

pre.next = node.next;

return true;

}

else

return false;

}

/*

*查看是否包括某元素

*/

public boolean contains(T element){

if(isEmpty()) return false;

else {

Node node = head;

while(node.element != element && null != node.next)//程序跳出条件为1、到表尾 2、找到这个元素

node = node.next; //不断指向下一个程序

if(node.element == element)

return true;

else

return false;

}

}

/*

*打印链表

*/

public void printList(){

if(isEmpty()){

System.out.println("null");

}

else{

for(Node node=head; node!=null;node=node.next)

System.out.print(node.element +" ");

System.out.println(); //打印回车

}

}

public static void main(String[] args) {

MyList list = new MyList();//若不加便是为指定參数类型,将会警告

//使用了未经检查或不安全的操作。

//有关具体信息, 请使用 -Xlint:unchecked 又一次编译。

for(int i=0; i<10; i++){

list.addFirst(i);

}

list.printList(); //打印

list.remove(0); //删除

list.printList(); //打印

list.addLast(0); //在尾部增加

list.printList(); //打印

list.add(7,-7); //在7之后插入-7

list.printList(); //打印

if(list.contains(-7))

System.out.println("is in the list !");

else

System.out.println("is not in the list !");

}

}

java单链表查询功能,Java 实现简答的单链表的功能相关推荐

  1. 快递鸟API单号查询接口Java开发调用源码

    快递鸟是专业的第三方物流数据服务商,国家高新技术企业,已先后完成四轮融资,一直专注于企业级物流API技术研发和打通物流各节点信息服务,致力于成为全球最大的物流信息枢纽中心,为零售电商企业级提供标准的物 ...

  2. java sql范围查询语句,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  3. Java项目:垃圾分类查询管理系统(java+SSM+jsp+MySQL+bootstrap)

    源码获取:博客首页 "资源" 里下载! jsp+ssm(spring+springmvc+mybatis)+mysql实现的垃圾分类查询管理系统: 系统主要实现的功能有: 1:前端 ...

  4. java中动态查询条件,Java实现动态添加查询条件

    今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的.如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql. ...

  5. python摄像头识别快递单号查询_免费对接快递鸟api单号识别查询接口(python)

    由于自己网站需要对接一些物流查询快递,然后在网上搜了一圈发现快递鸟比较适合我 之前写快递api的时候,官网上只有php和.net的示例,而我使用python封装的相关功能踩了许多坑,才搞出来,分享一下 ...

  6. mysql单表查询实验心得_5000字总结MySQL单表查询,新手看这一篇足够了!

    4.过滤 工作用的数据库表中一般包含大量数据,很少会一次全部查询,所以会使用where子句加过滤条件来查询我们需要的数据. 认识操作符 比较操作符 =(等于),<>.!=(不等于),=(大 ...

  7. 快递单号查询API接口对接Java源码示例_快递鸟

    零售电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开&quo ...

  8. java语法输出邮政快递单号查询

    java语法输出邮政快递单号查询代码 import java.io.PrintStream;public class PrintfTest1 {//java语法输出邮政快递单号查询public sta ...

  9. 常用物流快递单号查询API接口对接net源码示例_快递鸟

    零售电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开&quo ...

最新文章

  1. [译]ava 设计模式之享元
  2. PaddleHub 视频口罩检测
  3. python官方文档中文下载-python中文官方文档 PDF 下载
  4. ITK:按标量乘以图像
  5. 基于边缘云的机器流量管理技术实战
  6. ActiveMQ_使用经验
  7. 抵御物联网DDoS军团
  8. Android媒体解码MediaCodec,MediaExtractor
  9. gbase迁移mysql_基于datax实现从gbase到mysql的数据迁移--时间字段篇
  10. HashMap和Hashtable 线程安全性
  11. linux系统计算从1加到100之和思路风暴
  12. android 动态权限推送图标问题,「JPush」通知栏相关问题
  13. python运行怎么下一步_简明Python3教程 18.下一步是什么
  14. html5 实现 图片上传预览
  15. duplicate复制数据库
  16. 软件测试流程改进的几点看法
  17. matlab qpsk调制 函数,MATLAB_QPSK调制与解调
  18. 最新版mysql8.0.13如何汉化_MySQL 8.0.13 下载安装教程图文详解
  19. ICM20602互补滤波
  20. C语言链表翻转的三种实现方式(栈、头插法、递归法)

热门文章

  1. Angular 8正式发布!
  2. 编程语言之父谈语言设计,龟叔大赞TypeScript
  3. 将传统 ASP.NET 应用迁移到 .NET Core
  4. WebApiClient的JsonPatch局部更新
  5. 各个 Android Gradle 插件版本所需的 Gradle 版本
  6. vuejs 和 element 搭建的一个后台管理界面【收藏】
  7. 【MATLAB统计分析与应用100】案例001:matlab使用Importdata函数导入文本txt数据
  8. 连接局域网的SQL Server数据库配置
  9. Android之用setColorFilter在ImageView上面覆盖一层灰色的图层
  10. WireShark之抓包过滤链接部分