java链表代码,java链表的基本使用 代码
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链表的基本使用 代码相关推荐
- [Java数据结构][3]单链表以及双向链表Java代码实现
单链表Java代码实现,以水浒英雄链表为例 文章目录 单链表Java代码实现,以水浒英雄链表为例 定义一个英雄链表 定义一个SingleLinkedList 用于管理结点 初始化头结点以及添加结点到单 ...
- 数据结构Java实现03----单向链表的插入和删除b
文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定) 概念: 链式存储结构是基于指针实现的.我们把一个数据 ...
- 双向链表_如何通过Java单次查找链表的中间元素
双向链表 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常被问到Java和非Java程序员. 这个问题类似于检查回文或计算阶乘,有时Interviewer还会要求编写代码. ...
- java数据接口之链表_Java数据结构和算法之链表
三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LI ...
- java集合—— 链表(java中的所有链表都是双向链表)
[0]README 0.1) 本文描述转自 core java volume 1, 源代码 diy 的, 旨在理解 java集合-- 链表(java中的所有链表都是双向链表) 的相关知识: 0.2) ...
- java查找链表中间元素_如何通过Java单次查找链表的中间元素
java查找链表中间元素 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常问Java和非Java程序员. 这个问题类似于检查回文或 计算阶乘 ,有时Interviewer还 ...
- Java基础入门笔记-链表与容器
容器(Container):存储对象的东西. 容器是一个设计上的术语,不是一个语法概念. 比如数组,就是一个容器 数组容器 缺点: 1.容量固定,无法扩展.既不能射太大,也不能太小,很难确定. 2.插 ...
- java 查找链表中间元素_java查找链表中间元素_如何通过Java单次查找链表的中间元素...
java查找链表中间元素 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常问Java和非Java程序员. 这个问题类似于检查回文或 计算阶乘 ,有时Interviewer还 ...
- java单链表_(java实现)单链表
什么是单链表 在了解单链表之前,你知道什么是链表吗?如果你不知道什么是链表,可以看看我的这篇博客 单链表是链表的其中一种基本结构.一个最简单的结点结构如图所示,它是构成单链表的基本结点结构.在结点中数 ...
最新文章
- 服务器日志显示乱码,CentosOS 6.5 服务器 控制台输出中文乱码,日志打印中文也乱码...
- 对象存在性检测集中管理
- VTK:绘制BarChart条形图用法实战
- 文件管理、命令别名和glob
- JQuery DataTables Selected Row
- Catch That Cow【广搜】
- java 2d绘图 stroke_Java标准教程:Java 2D绘图--第4章使用Text
- Java前端技术汇总
- CMYK、RGB颜色对照表
- 这几天阅读的shadowgun的几个shader
- 英雄联盟血条效果Shader
- flush和evit
- java 毫秒数一天_java用毫秒数做日期计算的一个踩坑记录
- windows下CoffeeScript 的实现
- 面试:你印象最深的BUG,举个例子
- c罗图片带字经典语言,6张适合发朋友圈的人生哲理经典语句图片带字表情包 句句触动人心...
- 对*.mht文件结构的一个浅显分析
- 网站是不是php是什么意思,php网站是什么意思?
- 中国计算机科学家数量百人,百位科学家获“中国青年科技奖”,高校人数占比超七成...
- JAVA 网络编程流相关代码(UDP和TCP)
热门文章
- Redis主从配置和集群配置
- Python的列表推倒式、生成器及迭代器
- DCT如此重要,作者当初竟然不知道?
- 开源编解码器 SOLO 源码解读:带宽扩展与窄带编码
- 堡垒之夜一年内增1亿玩家、YouTube为支持AV1的8K电视提供8K内容、Elon Musk要过极简生活等...
- LiveVideoStack线上交流分享 (十) —— 开源声码器WORLD在语音合成中的应用
- 一切从用户的需求与体验出发
- 现代化 C++ 开发工具 CLion 从入门到精通
- 「递归」第2集 | 变得了魔术,解得了高数,这届鹅厂程序员有点酷
- devstack安装OpenStack Pike版本 (OVN+VLAN)