java简易双向链表的实现(添加和双向输出操作)
2019-04-09 19:59
169 查看
- 节点类
与单链表的区别主要在于添加节点时,需要指定新添加节点的前驱
class Node{//节点类 private String name; private Node pervious; protected Node next; public Node(){} public Node(String name){this.setName(name);} public Node(String name,Node pervious,Node next){ this.name=name; this.pervious=pervious; this.next=next; } public void setName(String name){this.name=name;} public void setPervious(Node pervious){this.pervious=pervious;} public void setNext(Node next){this.next=next;} public String getName(){return this.name;} public Node getNext(){return this.next;} public void addNode(Node newNode){//添加节点 if(this.next==null){ this.next=newNode; newNode.setPervious(this);//设置新添加节点的前驱节点 }else{ this.next.addNode(newNode); } } public void pPrintNode(){ System.out.println("姓名:"+this.getName()); if(this.next!=null){ this.next.pPrintNode(); } } public void nPrintNode(){ System.out.println("姓名:"+this.getName()); if(this.pervious!=null){ this.pervious.nPrintNode(); } } }
链表类,实现双向的遍历输出
class Link{ private static int LENGTH=0; private Node root; public Link(){} public void add(Node newNode){ ++LENGTH; if(this.root==null){ this.root=newNode; }else{ this.root.addNode(newNode); } } public void pPrint(){ if(this.root==null){//从根节点由前向后输出 System.out.println("空表"); } System.out.println("从前往后输出:"); this.root.pPrintNode(); } public Node getLast(){//得到最后一个节点 Node n=new Node(); n=this.root; for(int i=1;i<LENGTH;++i){//注意下标,不要越界 n=n.next; } return n; } public void nPrint(Node node){//从指定位置由后向前输出 System.out.println("从后往前输出"); node.nPrintNode(); } }
测试类
public class Train{ public static void main(String args[]){ Node n1=new Node("张三"); Node n2=new Node("李四"); Node n3=new Node("王五"); Node n4=new Node("赵六"); Node n5=new Node("孙七"); Link l=new Link(); l.add(n1); l.add(n2); l.add(n3); l.add(n4); l.add(n5); l.pPrint(); System.out.println(); l.nPrint(l.getLast()); } }
相关文章推荐
- 双向链表的基本操作: java语言实现
- Java实现双向链表的基本操作
- java实现二叉树的三种遍历方式,并把二叉树转为双向链表,输出二叉树
- [原]C语言实现双向链表删除节点、插入节点、双向输出等操作
- 双向循环链表的基本操作: java语言实现
- java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作
- java实现双向链表的操作
- 用java实现的双向链表增加删除修改操作
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- C语言实现双向链表删除节点、插入节点、双向输出等操作
- 使用JAVA实现双向链表
- 我遇到的java 笔试题: java 实现单链表并逆转输出
- C语言实现双向链表的基本操作
- Java双向链表的实现
- Java实现双向链表
- 双向链表的基本操作实现
- java 操作双向链表
- JAVA实现双向链表
- 双向循环链表操作的实现