在關於基礎單鏈表的面試題中,有一道這樣的面試題:
列印輸出2個鍊錶中的相同節點。
比如2個這樣的鍊錶。
你們也許會說,這個不是灰常灰常簡單麼。乙個鍊錶的乙個值與另外乙個鍊錶的所有值比較,然後相同就輸出它不就行了麼。但是這樣遍歷的複雜度就高了,如果面試官會要求你只能夠遍歷這個鍊錶一次的情況下去怎麼做呢?
1.2個鍊錶2個指標,
2.然後當其中乙個指標的值大的時候它就往後移。
3.相等2個輸出當前節點,然後2個指標同時往後移動這不就好了麼=。=
這個思路比較簡單,我直接給出**
void findequaldata(plinknode onehead,plinknode twohead)
while(onehead != null && twohead != null)
else
}else if(onehead->_data == twohead->_data)
else if(onehead->_data _data)
else}}}
在這個查詢函式中,我增加了乙個flag值得判斷,來由此判斷這2個是公升序鍊錶還是降序列表,在面試的時候考慮乙個問題必須要問清楚,在思考這個問題就需要跟面試官或者自己加上備註,要求,因為當乙個是降序乙個是公升序的時候,之遍歷一遍是不可能輸出的。
只有當他們2個鍊錶同時為公升序鍊錶或者是降序鍊錶的時候才能夠一次遍歷完成相同值得輸出。
就這樣=。=
願諸君與我一起進步。
資料結構 單鏈表相關知識
1 建立乙個單鏈表 實現思路 首先,定義乙個頭結點 l 為其在記憶體中開闢一段空間並將指標域指標指向null 其次,生成乙個新結點p,將要插入的資料元素儲存到結點的資料域,並將其指標域指標指向頭結點 l 指向的結點 或null 最後,將新結點p插入到表頭。隨機產生n個元素的值,建立帶頭結點的單鏈線性...
資料結構 (單鏈表刪除相同元素)
單鏈表作非遞減有序線性表的儲存結構。請設計乙個時間複雜度為o n 的演算法,刪除表中所有數值相同的多餘元素,並釋放結點空間。include include using namespace std typedef struct list list,lnode void initlist list l ...
資料結構 2 單鏈表
單鏈表與順序鍊錶不同,順序鍊錶在宣告時在記憶體中開闢一塊連續的儲存空間進行鍊錶資料項的儲存。所以單鏈表的項只需要儲存其資料,根據資料所在的序號進行訪問直接由鍊錶類控制,因為屋裡儲存區域連續,所以能夠很方便實現這些資料的訪問,插入和刪除。單鏈表在記憶體中不適用連續的空間儲存,所以單鏈表的項實際儲存兩個...