演算法系列之三 單鏈表反轉

2021-08-14 14:37:18 字數 1093 閱讀 5345

問題:

實現單鏈表反轉

答案:鍊錶準備

class node 

public int getdata()

public void setdata(int data)

public node getnext()

public void setnext(node next)

}

public static void main(string args) 

// 呼叫反轉方法

head = reverse(head);

system.out.println("\n**************************");

// 列印反轉後的結果

while (null != head)

}

遞迴反轉法在反轉當前節點之前先反轉後續節點。這樣從頭結點開始,層層深入直到尾結點才開始反轉指標域的指向。簡單的說就是從尾結點開始,逆向反轉各個結點的指標域指向

private static node reverse1(node head) 

node rehead = reverse1(head.getnext());

head.getnext().setnext(head);

head.setnext(null);

return rehead;

}

遍歷反轉法:遞迴反轉法是從後往前逆序反轉指標域的指向,而遍歷反轉法是從前往後反轉各個結點的指標域的指向

private static node reverse2(node head) 

node pre = head;

node cur = head.getnext();

node temp;

while (cur!=null)

head.setnext(null);

return pre;

}

演算法系列 單鏈表

public class linkedlist else size 插入方法 public void add int index,e e this.top.addnewnode index,newnode size 修改方法 public void set int index,e e 刪除方法 pu...

樹演算法系列之三 GBDT

gbdt與提公升樹有非常密切的關係。為方便閱讀本文,可以先參考提公升樹一文。在提公升樹一文中,我們提到每一輪迭代,都是去擬合上一輪的 殘差 如果用乙個簡單的公式表示就是yi fm 1 x y i f x yi fm 1 x gbdt與上面普通提公升樹的不同在於,其擬合的不是殘差,而是梯度下降的方向。...

演算法系列之三 歸併排序

歸併排序是分治演算法的另乙個典型的體現。與快速排序一樣,它依賴資料之間的比較進行排序。其缺點是需要額外的空間來輔助排序的過程。這使得歸併排序的實用性大大降低,因為在日常的應用中,使用歸併排序的場景都可以使用快速排序來替代。但是它的優點是可以按照預期來切分陣列,每一次都可以對半分,這樣不會出現因為分割...