摘要:本文主要向大家介绍了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) {
 
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号