首页 > 代码库 > Java数据结构系类之——链表(3):双向链表及相关常用操作
Java数据结构系类之——链表(3):双向链表及相关常用操作
package LinkList.doublelinklist; public class Node { public int data;//数据域 public Node next;//结点域,下一个结点 public Node prve;//结点域,前一个结点 //头结点初始化 public Node(Node next){ this.data=http://www.mamicode.com/data;>************************************************************************************************************************************
package LinkList.doublelinklist; public class DoubleLinkList { Node head;// 头结点 int size;// 链表大小 Node current;// 当前结点 // 初始化空链表 public DoubleLinkList() { this.head = new Node(null); this.size = 0; this.current = head; } // 判断线性表是否为空 public boolean isEmpty() { return size == 0; } // 获取指定位置的元素,这里我们定义头结点head的index为-1 public Node getElement(int index) { if (index < -1 || index >= size) { throw new RuntimeException("参数错误"); } if (index == -1) { current = head; } else { current = head.next; } for (int i = 0; i < index && current.next != null; i++) { current = current.next; } return current; } // 在指定位置插入元素,这里我们定义头结点head的index为-1 public void insert(int index, int data) { Node node = new Node(data, null,null); Node prev = getElement(index - 1);// 当前结点的前一个结点 current=prev.next;//当前结点 if(current!=null){ node.prve=prev; node.next=current; current.prve=node; prev.next=node; }else{ node.prve=prev; node.next=current; prev.next=node; } size++; } // 删除指定位置的元素 public void delete(int index) { if (index > size - 1) { throw new RuntimeException("参数错误"); } Node prev = getElement(index - 1);// 当前结点的前一个结点 current = prev.next; prev.next = current.next; current.prve = prev; size--; } // 打印链表 public void traverse() { if (isEmpty()) { System.out.println("null"); } else { current = head.next; while (current != null) { System.out.print(current.data + " "); current = current.next; } System.out.println(); } } }Java数据结构系类之——链表(3):双向链表及相关常用操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。