java資料結構之迴圈單鏈表
阿新 • • 發佈:2019-01-10
直接上程式碼舉例說明:
如果有什麼不清楚或者有啥疑問意見可以加我QQ/微信 208017534 / qiang220316,歡迎一起交流一起進步。public class CircularLinkedList { //java中迴圈單鏈表 private class Node {//建立一個內部節點類 private Node next = null; private Object value = null; public Node() { } public Node(Object value) { this.value = value; } } private Node head = null;//新建一個null的頭結點 public CircularLinkedList() {//初始化頭結點資訊 head = new Node(null); head.next = head; } public void insertNode(Object insertValue) {//在尾部新增節點 Node node = new Node(insertValue); if (head.next == head) { head.next = node; node.next = head; } else { Node temp = head; while (temp.next != head) { temp = temp.next; } temp.next = node; node.next = head; } } public void deleteNode(Object deleteValue) {//刪除值為deleteValue的節點 Node temp = head; while (temp.next != head) { if (temp.next.value.equals(deleteValue)) { temp.next = temp.next.next; } else { temp = temp.next; } } } public Object getIndexValue(int index) {//查詢位置為index的節點值 if (index < 0 || index >= getSize()) { return null; } else { Node node = new Node(); int count = 0; Node temp = head; while (temp.next != head) { if (count == index) { node.value = temp.next.value; break; } temp = temp.next; } return node.value; } } public int getValue(Object value) {//查詢值為value的節點 int count = 0; Node temp = head; while (temp.next != head) { if (temp.next.value.equals(value)) { return count; } count++; temp = temp.next; } return -1; } public int getSize() {//獲取迴圈單鏈表的長度 Node temp = head; int size = 0; while (temp.next != head) { size++; temp = temp.next; } return size; } public boolean isContain(Object value) {//查詢是否包含值為value的節點 Node temp = head; while (temp.next != head) { if (temp.next.value.equals(value)) { return true; } temp = temp.next; } return false; } public void disPlay() {//列印所有節點資料 Node temp = head; while (temp.next != head) { System.out.print(temp.next.value + "\t"); temp = temp.next; } System.out.println(); } public static void main(String[] args) { CircularLinkedList c=new CircularLinkedList(); c.insertNode(10); c.insertNode(21); c.insertNode(12); c.insertNode(13); c.insertNode(40); c.disPlay(); // System.out.println(c.getSize()); // System.out.println(c.getIndexValue(-1)); // System.out.println(c.getValue(40)); // c.deleteNode(10); // c.disPlay(); // c.deleteNode(40); // c.disPlay(); // c.deleteNode(12); // c.disPlay(); System.out.println(c.isContain(21)); } }