JAVA语言实现双向链表的代码教程
小标 2019-01-09 来源 : 阅读 1272 评论 0

摘要:本文主要向大家介绍了JAVA语言实现双向链表的代码教程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言实现双向链表的代码教程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


package Link;

 

interface Link{

    void add(Object obj);????//添加节点

    boolean remove(int index);????//删除下标为index的节点

    boolean contains(Object obj);????//判断链表是否包含值为obj的节点

    int indexOf(Object obj);????//查找值为obj的节点的下标

    boolean set(int index,Object obj);????//将下标为index的节点的值改为obj

    Object get(int index);????//获取下标为index的节点的值

    int length();????//获取链表的长度

    void clear();????//清空链表

    Object[] toArray();????//将链表中节点的值转为数组

    void printLink();????//打印链表

}

class Factory{

    private Factory() {}

    public static Link getLinkInstance() {

        return new LinkImpl();

    }

}

class LinkImpl implements Link{

    private int size = 0;

    private Node first;

    private Node last;

    public class Node{

        private Node prev;

        private Object data;

        private Node next;

        private Node(Node prev,Object data,Node next) {

            this.prev = prev;

            this.data = data;

            this.next = next;

        }

    }

    public void add(Object obj) {

        Node temp = this.last;

        Node newNode = new Node(temp,obj,null);

        this.last = newNode;

        if(temp == null) {

            this.first = newNode;

        }else {

            temp.next = newNode;

        }

        this.size++;

    }

    public int length() {

        return this.size;

    }

     

    public int indexOf(Object obj) {

        int index = 0;

        if(obj == null) {

            for(Node temp = this.first;temp != null;temp=temp.next) {

                if(temp.data == null) {

                    return index;

                }

                index++;

            }

        }else {

            for(Node temp = this.first;temp != null;temp = temp.next) {

                if(temp.data.equals(obj)) {

                    return index;

                }

                index++;

            }

        }

        return -1;

    }

     

    private boolean isElementIndex(int index) {

        return index>=0 && index<=size;

    }

     

    public void clear() {

        Node temp = this.first;

        for(temp = this.first;temp != null;) {

            Node x = temp.next;

            temp.prev = null;

            temp.data = null;

            temp.next = null;

            temp = x;

            this.size--;

        }

        this.first = this.last = null;

    }

    public Object get(int index) {

        if(!isElementIndex(index)) {

            return false;

        }

        int i=0;

        for(Node temp = this.first;temp != null;temp = temp.next) {

            if(i == index) {

                return temp.data;

            }

            i++;

        }

        return false;

    }

    public boolean contains(Object obj) {

        for (Node temp = this.first;temp != null;temp = temp.next) {

            if(temp.data == obj) {

    &nbsp    

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程