//删除尾节点
java版:
import edu.princeton.cs.algs4.*; public class Linklist<Item> { private static class Node<Item> { Item item; Node<Item> next; } public Node<Item> deletelastnode(Node<Item> first) { if(first == null) return null; Node<Item> last = first; while(last.next != null)//找尾节点 { last = last.next; } Node<Item> sec_last = first; while(sec_last.next != last)//找尾节点前一个节点 { sec_last = sec_last.next; } sec_last.next = null;//删除尾节点 return first; } public static void main(String[] args) { Node<String> first = new Node<String>(); Node<String> head = first; StdOut.println("input the length of link list:(>0)"); int c = StdIn.readInt(); for(int i = 0; i < c; i++)//创建链表 { Node<String> temp = new Node<String>(); first.item = "a"; first.next = temp; first = temp; } first.next = null; StdOut.println("original link list:"); Node<String> h1 = head; while(h1.next != null) { StdOut.print(h1.item + " "); h1 = h1.next; } StdOut.print("\n"); StdOut.println("after delete:"); Linklist<String> linklist = new Linklist<String>();//不是很懂 Node<String> h2 = linklist.deletelastnode(head); while(h2.next != null) { StdOut.print(h2.item + " "); h2 = h2.next; } StdOut.print("\n"); } }