資料結構-單向連結串列
阿新 • • 發佈:2018-11-28
package com.mzs.demo5; public class Node { private int data; private Node next; public Node(int data) { this.data = data; } public void setData(int data) { this.data = data; } public void setNext(Node next) { this.next = next; } public int getData() { return this.data; } public Node getNext() { return this.next; } }
package com.mzs.demo5; public class OneWayLinkedList { private static Node head = new Node(1); // head node /** * add new node (add at the end of the list) * @param data the data value of new node */ public static void addNode(int data) { Node newNode = new Node(data); Node temp = head; while (temp.getNext() != null) { temp = temp.getNext(); } temp.setNext(newNode); /** add at the head of the list **/ /*Node newNode = new Node(data); newNode.setNext(head); head = newNode;*/ } /** * give specified position and add a new node * @param data the data value of the list * @param position specified position */ public static void addNode0(int data, int position) { if (position == 0) addNode(data); if (position < 0 || position > length(head) - 1) throw new IllegalArgumentException("illegal argument"); Node newNode = new Node(data); int length = 0; Node temp = head; while (temp.getNext() != null) { if ((length + 1) == position) { newNode.setNext(temp.getNext()); temp.setNext(newNode); return ; } length++; temp = temp.getNext(); } } /** * delete the node of specified position * @param position specified position */ public static void deleteNode(int position) { if (position < 1 || position > length(head) - 1) { throw new IllegalArgumentException("illegal argument"); } Node temp = head; int length = 0; while (temp.getNext() != null) { if ((length + 1) == position) { Node deleteNode = temp.getNext(); temp.setNext(deleteNode.getNext()); return ; } length++; temp = temp.getNext(); } } /** * traversal the list * @param head head node of the list */ public static void traversal(Node head) { Node temp = head; while (temp != null) { System.out.print(temp.getData() + " "); temp = temp.getNext(); } } /** * calculate the length of the list * @param head * @return the length of the list */ public static int length(Node head) { int length = 0; Node temp = head; if (head == null) return 0; while (temp != null) { length++; temp = temp.getNext(); } return length; } public static void main(String[] args) { addNode(2); addNode(3); addNode(4); deleteNode(1); //addNode0(0, 2); traversal(head); } }