知识大全 Java实现双向链表
Posted 结点
篇首语:贫不足羞,可羞是贫而无志。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java实现双向链表相关的知识,希望对你有一定的参考价值。
Java实现双向链表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
自定异常类
Java代码
public class MyException extends Exception
public MyException();
public MyException(String msg)
super(msg);
链表结点对像
Java代码
public class Node
public Node previou=null;//前结点指针
public Node next=null; //后结点指针
public Object value;//结点值
Node(Object value)
this value=value;
链表对像
Java代码
public class DoubleLinked
private Node head;//链表头
DoubleLinked()
/**
* 判断是否还有下一个结点 没有则为链表的尾结点
* @param node
* @return
*/
public boolean hasNext(Node node)
if(node next==null)
return false;
return true;
/**
* 判断是否有上一个结点 没有则为链表的头结点
* @param node
* @return
*/
public boolean hasPrev(Node node)
if(node previou==null)
return false;
return true;
/**
* 获取链表头元素
* @return
* @throws MyException
*/
public Node getHead() throws MyException
if(head==null)
throw new MyException( 链表为空 );
return head;
/**
* 获取上一个接点
* @param node
* @return
*/
public Node getPrev(Node node)
return node previou;
/**
* 获取下一个结点
* @param node
* @return
*/
public Node getNext(Node node)
return node next;
/**
* 根据索引获取结点
* @param index 结点索引
* @return
* @throws MyException
*/
public Node getNode(int index) throws MyException
Node curNode=null;
Node next=null;
Node node=null;
if(head==null)
throw new MyException( 链表为空 );
else
curNode=head;
for(int i= ;i<index;i++)
if(curNode==null)
throw new MyException( 你要获取的元素索引大于链表长度 );
else
node=curNode;
if(hasNext(curNode))
next=curNode next;
curNode=next;
else
curNode=null;
return node;
/**
* 获取最后一个结点
* @return
* @throws MyException
*/
public Node getLast() throws MyException
Node curNode=null;
Node next=null;
Node last=null;
boolean flag=true;
if(head==null)
throw new MyException( 链表为空 );
else
curNode=head;
while(flag)
if(hasNext(curNode))
next=curNode next;
curNode=next;
else
last=curNode;
flag=false;
return last;
/**
* 在链表头添加新结点
* @param node
*/
public void addHead(Node node)
if(head==null)
head=node;
else
node next=head;
head previou=node;
head=node;
/**
* 在链表末尾处添加新结点
* @param node
* @throws MyException
*/
public void addLast(Node node) throws MyException
if(head==null)
head=node;
else
Node last=this getLast();
last next=node;
node previou=last;
/**
* 在链表中间插入新结点
* @param node
* @throws MyException
*/
public void insertNode(int index Node node) throws MyException
Node indexNode=this getNode(index);
Node prev=indexNode previou;
prev next=node;
node previou=prev;
node next=indexNode;
indexNode previou=node;
/**
* 删除链表头结点
* @return
* @throws MyException
*/
public Node deleteHead() throws MyException
Node head=this getHead();
if(hasNext(head))
Node next=head next;
this head=next;
next previou=null;
return head;
/**
* 删除链表的最后一个结点
* @return
* @throws MyException
*/
public Node deleteLast() throws MyException
Node last=this getLast();
Node prev=last previou;
if(prev==null)
this head=null;
else
prev next=null;
return last;
/**
* 根据索引删除链表结点
* @param index
* @return
* @throws MyException
*/
public Node deleteNode(int index) throws MyException
Node node=this getNode(index);
Node prev=node previou;
Node next=node next;
if(prev==null && next!=null)
this head=next;
next previou=null;
if(prev!=null && next==null)
prev next=null;
if(prev==null && next==null)
this head=null;
if(prev!=null && next!=null)
prev next=next;
next previou=prev;
return node;
cha138/Article/program/Java/hx/201311/26531
相关参考
第九课本课主题循环链表与双向链表教学目的掌握循环链表的概念掌握双向链表的的表示与实现教学重点双向链表的表示与实现教学难点双向链表的存储表示授课内容一复习线性链表的存储结构二循环链表的存储结构循环链表是
数据结构学习讲座(C++)双向链表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!双向链表 
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 voidListInsert_DuL(DuLink&LDuLNode
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 voidListDelete_DuL(DuLink&LDuNode*
图双向链表中的结点删除 双向链表的结束条件和单链表相同双向循环链表的结束条件和单向循环链表的结束条件相同 静态链表 根据上节单链表的知识用单链表表示线性表时其结点空间是在运行时根据需要动态分
实体类 Java代码 publicclassNode&n
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 与单链表类似双向链表也是由指向头结点的头指针唯一确定若将头尾结点链接起来则构
知识大全 pHeadA,pHeadB,请写一函数将两链表中data
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜
双链表双向链表(DoubleLinkedList) 双(向)链表中有两条方向不同的链即每个结点中除next域存放后继结点地址外还增加一个指向其直接前趋的指针域pri
.[题目分析]双向循环链表自第二结点至表尾递增有序要求将第一结点插入到链表中使整个链表递增有序由于已给条件(a<x<an)故应先将第一结点从链表上摘下来再将其插入到链表中相应位置由于是