演算法和資料結構單鏈表的逆轉
阿新 • • 發佈:2018-12-24
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()); } }