找鍊錶的中間結點

2022-07-24 10:18:10 字數 721 閱讀 2614

//

找鍊錶的中間結點

/*已知單鏈表l,編寫演算法找出該鍊錶的中間位置的結點。

思考:1、一種想法就是從頭遍歷到尾部,記錄長度。隨後再次遍歷一次,直到長度的二分之一即找到。時間複雜度為o(3n/2)

2、另一種想法:設定快慢指標,快指標一次走兩步,慢指標一次走一步,當快指標走到null的時候,慢指標的位置就是鍊錶的中間位置

本程式使用第二種想法

*/#include

#include

using

namespace

std;

int l_length = 0

;template

struct

node

node(

const t &data)

};template

void pushinlist(node* &l, const t &t)

template

void printlist(const node*l)

template

node

* getmiddle(const node*l)

returnp;}

int main(void

) /*

樣例輸入:

a b c d e f g -1

a b c d e f -1

樣例輸出:dc

*/

鍊錶的中間結點

題目 給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode ...

鍊錶的中間結點

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...

鍊錶的中間結點

力扣題目鏈結 給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。例項1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 例項2 輸入 1,2,3,4,5,6 輸出 此列表中的結點 4 序列化形式 ...