劍指Offer 鍊錶 (6)

2021-09-02 18:22:47 字數 727 閱讀 7413

知識點/陣列:鍊錶

題目描述

輸入兩個鍊錶,找出它們的第乙個公共結點。

思路:

蠻力法:在第乙個鍊錶遍歷每個節點,每遍歷到乙個節點,就在第二個鍊錶上遍歷每個節點。如果在第二個鍊錶上有乙個節點和第二鍊錶上的節點一樣,則說明兩個鍊錶在這個節點上重合,於是找到了他們的公共節點。時間複雜度:o(m*n);

觀察如果兩個鍊錶有重複的節點,那麼公共節點出現在鍊錶的尾部。如果我們從兩個鍊錶的尾部開始比較,那麼最後乙個相同的節點就是我麼你要找的節點。

/*

public class listnode

}*/public class solution

int count1=0;

listnode p1= phead1;

while(p1!=null)

int count2=0;

listnode p2= phead2;

while(p2!=null)

int result=count1-count2;

if(result>0)

while(phead1!=phead2)

return phead1;

}if(result<=0)

while(phead1!=phead2)

return phead1;

}return null;

}}

6 劍指offer 翻轉鍊錶

class solution 如果head為null的時候,pre就為最後乙個節點了,但是鍊錶已經反轉完畢,pre就是反轉後鍊錶的第乙個節點 直接輸出pre就是我們想要得到的反轉後的鍊錶 return pre 第二種方法是 遞迴方法 struct listnode class solution 2 ...

劍指offer 鍊錶

單向鍊錶的結構定義 typedef int datatype struct listnode 問題1 往鍊錶的末尾新增乙個結點 給定頭結點,往末尾插入乙個結點 void insertnode listnode head,datatype key listnode p head while p nex...

劍指offer 鍊錶

鍊錶 鍊錶是一種動態資料結構 struct listnode 往鍊錶的末尾新增乙個節點的c 程式如下 void addtotail listnode phead,int value 注意第乙個引數phead是乙個指向指標的指標。當我們往乙個空鍊錶插入乙個結點時,else pnode m pnext ...