package test;

interface ILink{

public void add(E e);//添加链表数据

public int size();//返回链表长度

public boolean isEmpty();//判断链表是否为空

public Object [] toArray();//返回集合数据

public E get(int index);//返回指定索引的数据

public void set(int index,E data);//修改值

public boolean contains(E data);//判断指定数据是否存在

}

class LinkImpl implements ILink{

private class Node{//保存节点的数据关系

private E data;

private Node next;//保存下一个引用

private Node(E data) {

this.data=data;

}

//第一次调用

public void addNode(Node newNode) {

//保存新的Node数据

if(this.next==null) {

this.next =newNode;

}else {

this.next.addNode(newNode);

}

}

public void toArrayNode() {

LinkImpl.this.returnData [LinkImpl.this.foot ++]=this.data;

if(this.next!=null) {

this.next.toArrayNode();

}

}

public E getNode(int index) {

if(LinkImpl.this.foot ++ ==index) {

return this.data;

}

else {

return this.next.getNode(index);

}

}

public void setNode(int index,E data) {

if(LinkImpl.this.foot ++ ==index) {

this.data=data;

}

else {

this.next.getNode(index);

}

}

public boolean containsNode(E data) {

if(this.data.equals(data)) {

return true;

}

else{

if(this.next==null) {

return false;

}else {

return this.next.containsNode(data);

}

}

}

}

private Node root;

//增加数据

private int count;

private int foot;

private Object[] returnData;

public void add(E e) {

if(e==null) {

return ;

}else {

Node newNode = new Node(e);//创建新节点

if(this.root==null) {

this.root=newNode;

}

else {

this.root.addNode(newNode);

}

this.count++;

}

}

@Override

public int size() {

// TODO Auto-generated method stub

return this.count;

}

@Override

public boolean isEmpty() {

//this.count==0

return this.root==null;

}

@Override

public Object[] toArray() {

if(this.isEmpty()) {

return null;

}

this.foot=0;

this.returnData=new Object[this.count];

this.root.toArrayNode();

return this.returnData;

}

@Override

public E get(int index) {

if(index>this.count) {

return null;

}

this.foot=0;

return this.root.getNode(index);

}

@Override

public void set(int index, E data) {

if(index>=this.count) {

return ;

}

this.foot=0;

this.root.setNode(index, data);

}

@Override

public boolean contains(E data) {

if(data==null) {

return false;

}

return this.root.containsNode(data);

}

}

public class Test1 {

public static void main(String[] args) throws Exception {

LinkImpl all = new LinkImpl();

System.out.println("size:"+all.size());

all.add("hello");

all.add("wo");

System.out.println("-------------");

System.out.println("size:"+all.size());

Object [] array = all.toArray();

for(Object obj:array) {

System.out.print(obj);

}

System.out.println("数据获取");

System.out.println(all.get(1));

System.out.println(all.contains("wo"));

System.out.println(all.contains("women"));

}

}

标签:index,return,int,代码,next,链表,java,data,public

来源: https://www.cnblogs.com/yxj808/p/12644306.html

java链表代码,java链表的基本使用 代码相关推荐

  1. [Java数据结构][3]单链表以及双向链表Java代码实现

    单链表Java代码实现,以水浒英雄链表为例 文章目录 单链表Java代码实现,以水浒英雄链表为例 定义一个英雄链表 定义一个SingleLinkedList 用于管理结点 初始化头结点以及添加结点到单 ...

  2. 数据结构Java实现03----单向链表的插入和删除b

    文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定)            概念: 链式存储结构是基于指针实现的.我们把一个数据 ...

  3. 双向链表_如何通过Java单次查找链表的中间元素

    双向链表 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常被问到Java和非Java程序员. 这个问题类似于检查回文或计算阶乘,有时Interviewer还会要求编写代码. ...

  4. java数据接口之链表_Java数据结构和算法之链表

    三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LI ...

  5. java集合—— 链表(java中的所有链表都是双向链表)

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码 diy 的, 旨在理解 java集合-- 链表(java中的所有链表都是双向链表) 的相关知识: 0.2) ...

  6. java查找链表中间元素_如何通过Java单次查找链表的中间元素

    java查找链表中间元素 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常问Java和非Java程序员. 这个问题类似于检查回文或 计算阶乘 ,有时Interviewer还 ...

  7. Java基础入门笔记-链表与容器

    容器(Container):存储对象的东西. 容器是一个设计上的术语,不是一个语法概念. 比如数组,就是一个容器 数组容器 缺点: 1.容量固定,无法扩展.既不能射太大,也不能太小,很难确定. 2.插 ...

  8. java 查找链表中间元素_java查找链表中间元素_如何通过Java单次查找链表的中间元素...

    java查找链表中间元素 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常问Java和非Java程序员. 这个问题类似于检查回文或 计算阶乘 ,有时Interviewer还 ...

  9. java单链表_(java实现)单链表

    什么是单链表 在了解单链表之前,你知道什么是链表吗?如果你不知道什么是链表,可以看看我的这篇博客 单链表是链表的其中一种基本结构.一个最简单的结点结构如图所示,它是构成单链表的基本结点结构.在结点中数 ...

最新文章

  1. 服务器日志显示乱码,CentosOS 6.5 服务器 控制台输出中文乱码,日志打印中文也乱码...
  2. 对象存在性检测集中管理
  3. VTK:绘制BarChart条形图用法实战
  4. 文件管理、命令别名和glob
  5. JQuery DataTables Selected Row
  6. Catch That Cow【广搜】
  7. java 2d绘图 stroke_Java标准教程:Java 2D绘图--第4章使用Text
  8. Java前端技术汇总
  9. CMYK、RGB颜色对照表
  10. 这几天阅读的shadowgun的几个shader
  11. 英雄联盟血条效果Shader
  12. flush和evit
  13. java 毫秒数一天_java用毫秒数做日期计算的一个踩坑记录
  14. windows下CoffeeScript 的实现
  15. 面试:你印象最深的BUG,举个例子
  16. c罗图片带字经典语言,6张适合发朋友圈的人生哲理经典语句图片带字表情包 句句触动人心...
  17. 对*.mht文件结构的一个浅显分析
  18. 网站是不是php是什么意思,php网站是什么意思?
  19. 中国计算机科学家数量百人,百位科学家获“中国青年科技奖”,高校人数占比超七成...
  20. JAVA 网络编程流相关代码(UDP和TCP)

热门文章

  1. Redis主从配置和集群配置
  2. Python的列表推倒式、生成器及迭代器
  3. DCT如此重要,作者当初竟然不知道?
  4. 开源编解码器 SOLO 源码解读:带宽扩展与窄带编码
  5. 堡垒之夜一年内增1亿玩家、YouTube为支持AV1的8K电视提供8K内容、Elon Musk要过极简生活等...
  6. LiveVideoStack线上交流分享 (十) —— 开源声码器WORLD在语音合成中的应用
  7. 一切从用户的需求与体验出发
  8. 现代化 C++ 开发工具 CLion 从入门到精通
  9. 「递归」第2集 | 变得了魔术,解得了高数,这届鹅厂程序员有点酷
  10. devstack安装OpenStack Pike版本 (OVN+VLAN)