單向連結串列取指定節點
阿新 • • 發佈:2018-11-26
package com.weshare.eel.task.utils; public class Node { private int nodeValue; private Node nextNode; public int getNodeValue() { return nodeValue; } public void setNodeValue(int nodeValue) { this.nodeValue = nodeValue; } public Node getNextNode() { returnnextNode; } public void setNextNode(Node nextNode) { this.nextNode = nextNode; } public Node(int nodeValue) { this.nodeValue = nodeValue; } }
package com.weshare.eel.task.utils; public class LinkNode { private Node head = null; private Node tail= null; private int len = 0; public void addNode(int value) { Node newNode = new Node(value); // 單鏈表長度 len += 1; // 為節點設定 tail = newNode; // 頭結點為空的場合直接設定 if (null == head) { head = newNode; return; } // 臨時節點Node temp = head; while (temp.getNextNode() != null) { temp = temp.getNextNode(); } temp.setNextNode(newNode); } public Node getHead() { return head; } public Node getTail() { return tail; } public int getLen() { return len; } }
package com.weshare.eel.task.utils; import java.util.List; public class Test01 { public static void main(String[] args) { LinkNode linkNode = new LinkNode(); for (int i = 1; i <= 100; i++) { linkNode.addNode(i); } int len = linkNode.getLen(); System.out.println(len); Node head = linkNode.getHead(); int lentemp = 1; Node tempNode = head; while (tempNode.getNextNode() != null) { lentemp++; tempNode = tempNode.getNextNode(); } System.out.println(lentemp); int tailk = lentemp - 2 + 1; int temp = 1; Node tailkNode = head; while (tailkNode.getNextNode() != null) { if (temp == tailk) { break; } temp++; tailkNode = tailkNode.getNextNode(); } System.out.println(tailkNode.getNodeValue()); } }