Object修改链表
以前学习过链表的时候由于类型的接收不同,每次要重写链表
下面修改可用链表
class Link{
private class Node{
private Object data ;
private Node next ;
public Node (Object data){
this.data = data ;
}
public void add(Node newNode){
if(this.next == null)
this.next = newNode;
else{
this.next.add(newNode) ;
}
}
public void print(){
System.out.println(this.data) ;
if(this.next == null)
return ;
else {
this.next.print() ;
}
}
public boolean containsNode(Object data){
if(data.equals(this.data))
return true;
else {
if(this.next != null)
return this.next.containsNode(data);
else
return false ;
}
}
public Object getNode(int index){
if(Link.this.foot ++ == index){
return this.data ;
} else {
return this.next.getNode(index) ;
}
}
public void setNode(int index ,Object data){
if(Link.this.foot ++ == index){
this.data = data ;
}
else{
this.next.setNode(index,data) ;
}
}
public void removeNode(Node previous ,Object data) {
if(data.equals(this.data)){
previous.next = this.next ;
} else {
this.next.removeNode(this,data) ;
}
}
public void toArrayNode(){
Link.this.retArray[Link.this.foot ++ ] = this.data ;
if(this.next != null)
this.next.toArrayNode() ;
}
}
private Node root ;
private int count = 0 ;
private int foot = 0 ;
private Object [] retArray ;
public void add(Object data){
if(data == null)
return ;
Node newNode = new Node(data) ;
if (root == null)
root = newNode;
else {
this.root.add(newNode) ;
}
this.count ++ ;
}
public void print(){
this.foot = 0 ;
if(root == null)
return ;
else{
root.print() ;
}
}
public int size() {
return this.count ;
}
public boolean isEmpty(){
return this.count == 0 ;
}
public boolean contains(Object data) {
if(this.root == null || data == null)
return false ;
else {
return this.root.containsNode(data) ;
}
}
public Object get(int index){
if(index > this.count)
return null ;
else{
return this.root.getNode(index) ;
}
}
public void set(int index , Object data) {
if(index > this.count)
return ;
else{
this.foot = 0 ;
this.root.setNode(index,data) ;
}
}
public void remove(Object data){
if(this.contains(data)){
if(data.equals(this.root.data))
this.root = this.root.next ;
else{
this.root.next.removeNode(root,data) ;
}
}
}
public Object [] toArray(){
if(this.root == null){
return null ;
} else {
this.foot = 0 ;
this.retArray = new Object[this.count] ;
this.root.toArrayNode() ;
return this.retArray ;
}
}
}
public class Link1{
public static void main(String args[]){
Link all = new Link() ;
all.add("A") ; //String转为Object
all.add("B") ;
all.add("C") ;
all.remove("A") ;//String已经覆写了equals()方法
Object [] data = all.toArray();
for(int x = 0 ; x < data.length ; x ++){
String str = (String)data[x] ; //每一个对象向下转型 Object变为String
System.out.println(str) ;
}
}
}
总结:
Object类对象可以接受一切数据类型,解决了数据统一问题
Object修改链表的更多相关文章
- CLRS10.2-4练习 - 修改链表查询方法
要求: As written, each loop iteration in the LIST-SEARCH' procedure requires two tests:one for x ≠ L.n ...
- JAVA 链表操作:循环链表
主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...
- JAVA 链表操作:单链表和双链表
主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...
- 单链表的python实现
首先说下线性表,线性表是一种最基本,最简单的数据结构,通俗点讲就是一维的存储数据的结构. 线性表分为顺序表和链接表: 顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存 ...
- Java链表讲解
主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...
- Python3玩转单链表——逆转单向链表pythonic版
[本文出自天外归云的博客园] 链表是由节点构成的,一个指针代表一个方向,如果一个构成链表的节点都只包含一个指针,那么这个链表就是单向链表. 单向链表中的节点不光有代表方向的指针变量,也有值变量.所以我 ...
- java对单向单向链表的操作
概述:众所周知,数据对于数据的存储时连续的,也就是说在计算机的内存中是一个整体的.连续的.不间断的ADT数据结构.伴随的问题也会随之出现,这样其实对于内存的动态分配是不灵活的.而链表具备这个优点.因此 ...
- Java链表设计
链表 1,链表的实现 在实际开发之中对象数组是一项非常实用的技术,并且利用其可以描述出“多”方的概念,例如:一个人有多本书,则在人的类里面一定要提供有一个对象数组保存书的信息,但是传统的对象数组依赖于 ...
- 由反转链表想到python链式交换变量
这两天在刷题,看到链表的反转,在翻解体思路时看到有位同学写出循环中一句搞定三个变量的交换时觉得挺6的,一般用的时候都是两个变量交换(a,b=b,a),这种三个变量的交换还真不敢随便用,而且这三个变量都 ...
随机推荐
- Dev之ChartControl控件(一)
ChartControl控件主要包括Chart Title,Legend,Annotations,Diagram,Series五部分:如图: 1. 用RangeControl控件控制ChartCon ...
- HDU 3552 I can do it!
脑洞题.http://blog.csdn.net/dgq8211/article/details/7748078 #include<cstdio> #include<cstring& ...
- Python 数据挖掘 工具包整理
连接器与io 数据库 类别 Python R MySQL mysql-connector-python(官方) RMySQL Oracle cx_Oracle ROracle MongoDB pymo ...
- 关于java.lang.reflect.InvocationTargetException(jar 包缺少或者冲突)的错误
我在合肥那边运行了的是湖北石首市的项目没有错 可是回武汉之后 运行这个项目 点击这里的时候 就报错java.lang.reflect.InvocationTargetException 不是数据库 ...
- getHibernateTemplate()
getHibernateTemplate 前提条件:你的类必须继承HibernateDaoSupport 一: 回调函数: public List getList(){ return (List ...
- Linux基本命令之用户系统相关命令
1.格式说明 [simon@localhost simon]$ [simon@localhost ~]$ 这两种方式表示相同.simon是指定用户,localhost是计算机名字,如果不设置默认为lo ...
- HDU 5171 GTY's birthday gift 矩阵快速幂
GTY's birthday gift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- Android学习笔记之Broadcast Receiver
可程序间通信 注册通信,注销通信,发送消息 package com.jiahemeikang.helloandroid; import com.jiahemikang.service.EchoServ ...
- docker固定IP地址重启不变
docker固定IP地址重启不变 代码地址 https://github.com/lioncui/docker-static-ip 宿主机IP为 10.6.17.12 docker IP为 10.6 ...
- HDU 4408 Minimum Spanning Tree 最小生成树计数
Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...