模拟双链表

来源:互联网 发布:php基本知识 编辑:程序博客网 时间:2024/06/14 07:18


package l2;//双链表public class DLink {DNode head;public DLink() {head = new DNode();head.next = null;head.prior = null;}/** * * @Title: addNode * @Description: TODO(添加节点) * @param @param data  参数说明 * @return void    返回类型 * @throws */public void addNode(String data) {DNode p = head;while (p.next != null) {p = p.next;}DNode temp = new DNode(data);p.next = temp;temp.prior = p;}/** * * @Title: delNode * @Description: TODO(删除节点) * @param @param data  参数说明 * @return void    返回类型 * @throws */public void delNode(String data) {DNode p = head;if (p.next == null) {return;}while (p.next != null) {if (p.next.name.equals(data)) {p.next.next.prior = p.next.prior;p.next = p.next.next;break;} else {p = p.next;}}}/** * * @Title: display * @Description: TODO(遍历链表) * @param   参数说明 * @return void    返回类型 * @throws */public void display() {DNode p = head;//从头到尾while (p.next != null) {System.out.println(p.next.name);p = p.next;}System.out.println("-----------------------");//从尾到头while (p.prior != head) {System.out.println(p.name);p = p.prior;}System.out.println(p.name);}/** * * @Title: findNode * @Description: TODO(查找节点) * @param @param data  参数说明 * @return void    返回类型 * @throws */public void findNode(String data) {DNode p = head;while (p.next != null) {if (p.next.name.equals(data)) {System.out.println("data=" + p.next.name);break;} else {p = p.next;}}}/** * * @Title: insertNode * @Description: TODO(插入节点) * @param @param beforeData* @param @param data  参数说明 * @return void    返回类型 * @throws */public void insertNode(String beforeData, String data) {DNode p = head;while (p.next != null) {if (p.next.name.equals(beforeData)) {DNode temp = p.next;DNode insertNode = new DNode(data);insertNode.next = temp.next;temp.next.prior = insertNode;temp.next = insertNode;insertNode.prior = temp;break;} else {p = p.next;}}}/** * * @Title: size * @Description: TODO(获取节点大小) * @param   参数说明 * @return void    返回类型 * @throws */public void size() {DNode p = head;int i = 0;while (p.next != null) {System.out.println(p.name);p = p.next;i++;}System.out.println("长度:" + i);}}

package l2;//节点类public class DNode {String name;DNode prior;DNode next;public DNode() {}public DNode(String name) {super();this.name = name;prior = null;next = null;System.out.println("生成节点:" + name);}}


package l2;public class TestDLink {public static void main(String[] args) {DLink link = new DLink();link.addNode("1");link.addNode("2");link.addNode("3");link.addNode("4");link.display();System.out.println("-------------");link.delNode("3");link.display();System.out.println("----------------");link.insertNode("2", "3");link.display();}}




0 0
原创粉丝点击