java 实现 iterator_JAVA链表中迭代器的实现_林竹w的博客-程序员宅基地

技术标签: java 实现 iterator  

importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importtest_4_19.system;/*** java链表中迭代器的实现

* 2017年5月2号17:25

*@authorzcj

**/

classLink9

{public longdData;publicLink9 next;public Link9(longdd)

{

dData=dd;

}public voiddisplayLink()

{

System.out.print(dData+ " ");

}

}classLinkList9

{privateLink9 first;publicLinkList9()

{

first= null;

}public Link9 getFirst()//获取链表的first

{returnfirst;

}public void setFirst(Link9 f)//由于在迭代器里面first可能会改变,所以需要LinkList中提供first改变的方法

{

first=f;

}public booleanisEmpty()

{return first==null;

}publicListIterator getIterator()

{return new ListIterator(this);

}public voiddispalyList()

{

Link9 current=first;while(current != null)

{

current.displayLink();

current=current.next;

}

System.out.println("");

}

}classListIterator

{privateLink9 current;privateLink9 previous;privateLinkList9 ourList;publicListIterator(LinkList9 list)

{

ourList=list;

reset();

}public void reset()//把迭代器复位,并放在表头

{

current=ourList.getFirst();

previous= null;

}public boolean atEnd()//判断当前节点是否为最后一个链节点

{return (current.next == null);

}public void nextLink()//到下一个链接点

{

previous=current;

current=current.next;

}public Link9 getCurrent()//得到当前链接点的内容

{returncurrent;

}public void insertAfter(long dd)//在当前链接点后插入新的链节点

{

Link9 newLink= newLink9(dd);if(ourList.isEmpty())

{

ourList.setFirst(newLink);

current=newLink;

}else{

newLink.next=current.next;

current.next=newLink;

nextLink();

}

}public void insertBefore(long dd)//在当前链接点前插入新的链节点

{

Link9 newLink= newLink9(dd);if(previous == null)

{

newLink.next=ourList.getFirst();

ourList.setFirst(newLink);

reset();

}else{

newLink.next=previous.next;

previous.next=newLink;

current=newLink;

}

}public long deleteCurrent()//删除当前链节点

{long value =current.dData;if(previous == null)

{

ourList.setFirst(current.next);

reset();

}else{

previous.next=current.next;if(atEnd())

reset();elsecurrent=current.next;

}returnvalue;

}

}public classinterIterator5_9 {/***@paramargs

*@throwsIOException*/

public static void main(String[] args) throwsIOException {//TODO Auto-generated method stub

LinkList9 theList = newLinkList9();

ListIterator iter1=theList.getIterator();longvalue;

iter1.insertAfter(20);

iter1.insertAfter(40);

iter1.insertAfter(80);

iter1.insertBefore(60);while(true)

{

System.out.println("Enter first letter of ");

System.out.print("show,reset,next,get,before,after,delete: ");

System.out.flush();int choice =getChar();switch(choice) {case 's':if(!theList.isEmpty())

theList.dispalyList();elseSystem.out.println("List is empty!");break;case 'r':

iter1.reset();break;case 'n':if(!theList.isEmpty() && !iter1.atEnd())

iter1.nextLink();elseSystem.out.println("can't go to nextLink");break;case 'g':if(!theList.isEmpty())

{

value=iter1.getCurrent().dData;

System.out.println("returned" +value);

}elseSystem.out.println("List is Empty");break;case 'b':

System.out.println("Enter value to insert: ");

System.out.flush();

value=getInt();

iter1.insertBefore(value);break;case 'a':

System.out.println("Enter value to insert: ");

System.out.flush();

value=getInt();

iter1.insertAfter(value);break;case 'd':if(!theList.isEmpty())

{

value=iter1.deleteCurrent();

System.out.println("Deleted" +value);

}elseSystem.out.println("Can't delete");break;default:

System.out.println("Invalid entry");

}

}

}public static String getString() throwsIOException

{

InputStreamReader isr= newInputStreamReader(System.in);

BufferedReader br= newBufferedReader(isr);

String s=br.readLine();returns;

}public static char getChar() throwsIOException

{

String s=getString();return s.charAt(0);

}public static int getInt() throwsIOException

{

String s=getString();returnInteger.parseInt(s);

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42511151/article/details/114170974

智能推荐

java高级特效反射_Better0417的博客-程序员宅基地

一 、什么叫反射1、 在程序运行时动态解析类的内部信息(注解,属性,方法),所以反射的前提就是:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)2、获取类信息的三种方法(1)Class class 对象 Field private Xxx valName= “name” 访问修饰符 private/default/protected/public 数据类型

Mybatis中返回类型非vo时,字段值为Null时,会自动过滤_zhangxiaojun34901的博客-程序员宅基地

一、场景:程序中需要用List<Map>接受返回值,返回值Map中value存在null空值,在遍历时获取key时,返回null,相当于不存在key,直接抛出了nullpointexception…二、概述:1)如果返回值是List<Map>类型,Mybatis会默认自动过滤掉value为null的字段。2)Mybatis在默认情况下,结果集解析生成Map,如果va...

jqgrid--方法_jonathanzhan的博客-程序员宅基地

jqGrid的方法,从3.6开始已经完全兼容jQuery UI库。  jQuery("#grid_id").jqGridMethod( parameter1,...parameterN ); jQuery("#grid_id").setGridParam({...}).hideCol("somecol").trigger("reloadGrid");

蓝桥杯之最简单的分治法-----数字旋转方阵_小红红的小灰灰的博客-程序员宅基地

有一个N*N的方阵,如图要求如图数出这个方阵首先我们讲讲分治法,分治,分治,分而治之我们将这张图片分为这样1,2,3,4,5这列为一组             输入时候,只需要行数加16,7,8,9,10这行为一组    输入时候,只需要列数加111,12,13,14,15这行为一组    输入时候,只需要行数减116,17,18,19,20这行为一组    输入时

vuex study第四节getters计算过滤操作_单眼皮的小熊的博客-程序员宅基地

首先store里面声明getters//声明getters,就是每次count改变时先加上100const getters = { count:function(state){ return state.count +=100; }}//导出export default new Vuex.Store({ //导出状态常量 state, /

C# Winform 开源控件_一枝独秀2013的博客-程序员宅基地_c# winform 开源控件

C# WinForm开发系列 - Open-Source Controls    整理了一些在WinForm开发中可以使用的开源组件.(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! ).1. 仿office 2007的Ribbon风格面板(该控件模仿office 2007的Ribbon风格,显示操作面板。)2. .NET中最全功能的表格控

随便推点

深入理解java虚拟机(十)JConsole:Java监视与管理控制台_前卫的架构师小D的博客-程序员宅基地_java监视和管理控制台

文章目录一、JConsole介绍二、启动JConsole三、内存监控四、线程监控结尾一、JConsole介绍JConsole( Java Monitoring and Management Console)是一款基于JMX( Java Manage-ment Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean( Managed Bean)对系统进行信息收集和参数动态调整。 JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中,典型的如

python shell GUI编写切换工作路径_超江的博客-程序员宅基地

1.python shell GUI编写切换工作路径方式:>>> import os>>> os.chdir("d:\\")>>> print os.getcwd()d:\2.python 可视窗口调试方法,根据出错信息提示的行数,alt+G切换到对应的错误信息处

Docker-compose创建镜像与容器_raining……的博客-程序员宅基地_dockercompose构建镜像

IDEA源码到Docker容器创建完成图解全过程一、工程源码打包成jar二、添加配置文件1、application.yml 内容2、docker-compose.yml 内容3、Dockerfile 内容三、将上述三文件与工程jar包上传服务器四、使用Docker-compose创建镜像与容器一、工程源码打包成jar首先 idea 得安装插件maven。使用maven的package功能生成....

中国顶级互联网公司的技术组织架构调整预示着什么?_朱小厮的博客-程序员宅基地

点击上方“朱小厮的博客”,选择“设为星标”后台回复”1024“获取公众号专属1024GB资料作者丨晓乐来源丨AI早餐汇(ID:AImorningshow)本文由21CTO晓乐综合央广网、...

GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training_Flare_J的博客-程序员宅基地

GANomaly: Semi-Supervised Anomaly Detection via Adversarial TrainingGANomaly:通过对抗性训练进行半监督异常检测​ — 2018 发表于发表于arXivAbstract异常检测是计算机视觉中的一个经典问题,即当数据集由于另一类(异常)的样本量不足而高度偏向于一类(正常)时,从异常中确定正常。虽然这可以作为一个有监督的学习问题来解决,但一个更具挑战性的问题是如何检测未知/看不见的异常情况,从而将我

【C语言】c语言常用的几个函数源代码【strlen,strcpy,strcat,strstr】_csdn-[baotai]的博客-程序员宅基地_c语言函数代码

【strlen】a'h'n'sint my_strlen(const char *str)//测试字符字符串长度{ int count = 0; while (*str) { count++; str++; } return count;}int my_strlen1(const char *str)//应用递归测试字符串长度{ if (*str == '0') ...

推荐文章

热门文章

相关标签