利用快慢指標原理:設定兩個指標search、mid都指向單鏈表的頭節點。其中 search的移動速度是mid的2倍。當*search指向末尾節點的時候,mid正好就在中間了。這也是標尺的思想。
#include
using
namespace std;
typedef
struct node
node;
typedef node *linklist;
void
getelem
(linklist head)
;void
createlist
(linklist *head)
;void
printlist
(linklist head)
;int
main
(void
)void
createlist
(linklist *head)
tail-
>next=
null;}
void
getelem
(linklist head)
else
} cout<<
"中間值為:"
<>data<}void
printlist
(linklist head)
}
快速找到長度未知的中間節點
利用快慢指標原理 設定兩個指標search mid都指向單鏈表的頭節點。其中 search的移動速度是mid的2倍。當 search指向末尾節點的時候,mid正好就在中間了。這也是標尺的思想。include using namespace std typedef struct node node t...
騰訊 快速找到未知長度單鏈表的中間節點
普通的方法很簡單,首先遍歷一遍單鏈表以確定單鏈表的長度l。然後再次從頭節點出發迴圈l 2次找到單鏈表的中間節點。演算法複雜度為o l l 2 o 3l 2 能否再優化一下這個時間複雜度呢?有乙個很巧妙的方法 設定兩個指標 fast slow都指向單鏈表的頭節點。其中 fast的移動速度是 slow的...
單鏈表面試 找到未知長度的單鏈表的中間節點
找到未知長度的單鏈表的中間節點普通方法 1.確定單鏈表長度l,2.再次找到l 2次的中間節點。快速方法 快慢指標 原理 設定兩個指標search md都指向單鏈表的頭節點。其中search的移動速度是mid的2倍。當 search指向末尾節點的時候,mid正好就在中間了。這也是標尺的思想。快慢指標要...