package 數據結構之鏈表增刪查;public class Node { String name;// 數據域 Node next;// 鏈域 public Node() { this.name = ""; next = null; } public Node(String name) { this.name = name; next = null; }}package 數據結構之鏈表增刪查;public class Link { Node head;// 頭結點 public Link() { head = new Node();// 初始化頭結點 } /* * 添加節點,在鏈表的最后添加 */ public void add(Node data) { Node temp = head; while (temp.next != null) { temp = temp.next; } temp.next = data; } /* * 插入節點 在某個節點之后插入一個新的節點 */ public void insert(Node data, String newname) { Node temp = head; while (temp.next != null) { if (temp.next.name.equals(data.name)) { Node newNode = new Node(newname); newNode.next = temp.next.next; temp.next.next = newNode; break; } else { temp = temp.next; } } } /* * 刪除節點 */ public void delete(Node data) { Node temp = head; while (temp.next != null) { if (temp.next.name.equals(data.name)) { temp.next = temp.next.next; break; } else { temp = temp.next; } } } /* * 計算鏈表長度 */ public int size() { int len = 0; Node temp = head; while (temp.next != null) { len++; temp = temp.next; } return len; } /* * 查找數據 返回該數據的位置,返回3說明此數據在鏈表的第3個節點處,-1為鏈表中無此數據 */ public int serach(String name) { Node temp = head.next; int index = 0; while (temp != null) { if (temp.name.equals(name)) { index++; return index; } index++; temp = temp.next; } return -1; } /* * 遍歷鏈表 */ public void display() { Node temp = head; while (temp.next != null) { System.out.PRint(temp.next.name + "->"); temp = temp.next; } System.out.println(); } public static void main(String[] args) { // 創建鏈表 Link link = new Link(); // 創建節點 Node node1 = new Node("宋江"); Node node2 = new Node("盧俊義"); Node node3 = new Node("吳用"); Node node4 = new Node("林沖"); Node node5 = new Node("李逵"); Node node6 = new Node("燕青"); // 鏈表中添加數據節點 link.add(node1); link.add(node2); link.add(node3); link.add(node4); link.add(node5); link.add(node6); link.display();// 遍歷 System.out.println(link.size());// 6,輸出鏈表長度 System.out.println(link.serach("李逵"));// 5 System.out.println(link.serach("燕"));// 不存在,返回-1 link.insert(node4, "花榮");// 在node4"林沖"之后添加"花榮" link.display();// 插入數據后遍歷 link.delete(node3);// 刪除節點node3"吳用" link.display();// 刪除之后再遍歷鏈表 System.out.println(link.size()); }}運行結果:宋江->盧俊義->吳用->林沖->李逵->燕青->65-1宋江->盧俊義->吳用->林沖->花榮->李逵->燕青->宋江->盧俊義->林沖->花榮->李逵->燕青->6
新聞熱點
疑難解答