快速找到長度未知的中間節點

2021-10-23 05:37:08 字數 712 閱讀 5252

利用快慢指標原理:設定兩個指標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正好就在中間了。這也是標尺的思想。快慢指標要...