首页 > 代码库 > 双向链表的java实现
双向链表的java实现
1 package structure; 2 3 import java.util.Arrays; 4 import java.util.Scanner; 5 import static net.mindview.util.Print.*; 6 7 /** 8 * 双向链表的操作 9 * @author Tom Tao 10 * 11 */ 12 class Node { 13 public int value; 14 public Node(int n) { 15 this.value =http://www.mamicode.com/ n; 16 } 17 Node pre; 18 Node next; 19 } 20 21 public class ReLinkedList { 22 public static Node head; 23 public static int nodeNum; 24 25 /*初始化*/ 26 public static void init(int n[]) { 27 head = new Node(n[0]); 28 Node temp = null; 29 head.pre = null; 30 Node p = head; 31 nodeNum ++; 32 for(int i = 1 ; n[i] != -1 ; i ++) { 33 nodeNum ++; 34 temp = new Node(n[i]); 35 p.next = temp; 36 temp.pre = p; 37 p = temp; 38 } 39 p.next = null; 40 } 41 42 /*打印*/ 43 public static void printList(Node h) { 44 while(h != null) { 45 printnb(h.value + " "); 46 h = h.next; 47 } 48 } 49 50 /*插入*/ 51 public static void insert(int index, int v) { 52 Node ne = new Node(v); 53 if(index == 0) { 54 ne.next = head; 55 ne.pre = null; 56 head = ne; 57 return; 58 } 59 Node temp = head; 60 Node t = temp; 61 for(int i = 0 ; i < index ; i ++) { 62 t = temp; 63 temp = temp.next; 64 } 65 if(index == nodeNum) { 66 t.next = ne; 67 ne.pre = t; 68 ne.next = null; 69 return; 70 } 71 ne.next = temp; 72 ne.pre = t; 73 temp.pre = ne; 74 t.next = ne; 75 } 76 77 /*删除*/ 78 public static void delete(int index) { 79 if(index == 0){ 80 head = head.next; 81 head.pre = null; 82 return; 83 } 84 Node temp = head; 85 Node t = temp; 86 for(int i = 0 ; i < index ; i ++) { 87 t = temp; 88 temp = temp.next; 89 } 90 if(index == nodeNum) { 91 t.next = null; 92 return; 93 } 94 t.next = temp.next; 95 temp.next.pre = t; 96 } 97 98 /*查找*/ 99 public static int find(int index) { 100 Node temp = head; 101 for(int i = 0 ; i < index ; i ++) { 102 temp = temp.next; 103 } 104 return temp.value; 105 } 106 107 /*test*/ 108 public static void main(String[] args) { 109 Scanner sc = new Scanner(System.in); 110 print("please input the nums to init:"); 111 int[] n = new int[100]; 112 Arrays.fill(n, -1); 113 int val; 114 int count = 0; 115 while((val = sc.nextInt()) >= 0) { 116 n[count++] = val; 117 } 118 init(n); 119 while(true){ 120 printList(head); 121 print("\nplease input the index and num to insert"); 122 int index = sc.nextInt(); 123 val = sc.nextInt(); 124 insert(index, val); 125 printList(head); 126 print("\nplease input the index to delete"); 127 index = sc.nextInt(); 128 delete(index); 129 printList(head); 130 print("\nplease input the index to find"); 131 index = sc.nextInt(); 132 print(find(index)); 133 print("----------------------------------------------------"); 134 } 135 } 136 }
双向链表的java实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。