Java 链表 - 倒数第 K 个节点:算法实现与测试
package\sCountDownListNode;\n\npublic\sclass\sCountDown\s{\n\tpublic\sclass\sListNode\s{\n\t int\sval;\n\t ListNode\snext;\n\t ListNode\s(int\sx)\s{\n\t val\s=\sx;\n\t }\n\t}\n\tpublic\sListNode\sgetKthFromEnd(ListNode\shead\s,\sint\sk)\s{\n\t ListNode\sfront\s=\shead\s,\sbehind\s=\shead;\n\t while(front\s!=\snull\s&&\sk>0)\s{\n\t front\s=\sfront.next;\n\t k\s--;\n\t }\n\t while(front\s!=null)\s{\n\t front\s=\sfront.next;\n\t behind\s=\sbehind.next;\n\t }\n\t return\sbehind;\n\t}\n}\n\npublic\sclass\sTestCountDown\s{\n\tpublic\sstatic\svoid\smain(String[]\sargs)\s{\n\t CountDown\scountDown\s=\snew\sCountDown();\n\t \n\t //\s构造链表\s1\s->\s2\s->\s3\s->\s4\s->\s5\n\t CountDown.ListNode\shead\s=\scountDown.new\sListNode(1);\n\t CountDown.ListNode\snode2\s=\scountDown.new\sListNode(2);\n\t CountDown.ListNode\snode3\s=\scountDown.new\sListNode(3);\n\t CountDown.ListNode\snode4\s=\scountDown.new\sListNode(4);\n\t CountDown.ListNode\snode5\s=\scountDown.new\sListNode(5);\n\t \n\t head.next\s=\snode2;\n\t node2.next\s=\snode3;\n\t node3.next\s=\snode4;\n\t node4.next\s=\snode5;\n\t \n\t int\sk\s=\s2;\s//\s倒数第2个节点\n\t \n\t CountDown.ListNode\sresult\s=\scountDown.getKthFromEnd(head,\sk);\n\t System.out.println('倒数第'\s+\sk\s+'个节点的值为:'\s+\sresult.val);\n\t}\n}
原文地址: http://www.cveoy.top/t/topic/pYkI 著作权归作者所有。请勿转载和采集!