1. 程式人生 > >演算法和資料結構單鏈表的逆轉

演算法和資料結構單鏈表的逆轉

public void reverse(SinglyList<T> list) {
    Node<T> p = list.head.next, succ = null, front = null;
    while (p != null) {
        succ = p.next;//設定succ是p結點的後繼結點,即用succ來保持p的後繼結點
p.next = front;//逆轉,即使p.next指向p結點的前驅結點
front = p;//front向後移一步
p = succ;//p向後移一步
}
    list.head.next = front;//head指向原連結串列的最後一個結點,完成逆轉
}
public class SinglyList_reverse {
    public static <T> SinglyList<T> createReverse(T[] values) {
        SinglyList<T> list = new SinglyList<T>(values);
        return list;
}

    public static void main(String[] args) {
        String[] values = {"A", "B", "C", "D", "E", 
"F"}; SinglyList<String> list = createReverse(values); System.out.println("list" + list.toString()); SinglyList s = new SinglyList(); s.reverse(list); System.out.println(",逆轉後" + list.toString()); } }