鍊錶相關1

2021-08-03 20:14:44 字數 1169 閱讀 4658

一、鍊錶的分化

題目:對於乙個鍊錶,我們需要用乙個特定閾值完成對它的分化,使得小於等於這個值的結點移到前面,大於該值的結點在後面,同時保證兩類結點內部的位置關係不變。

給定乙個鍊錶的頭結點head,同時給定閾值val,請返回乙個鍊錶,使小於等於它的結點在前,大於等於它的在後,保證結點值不重複。

思路:

該題目也可以將節點放到a陣列中,進行類似於荷蘭國旗問題的處理。

這裡給出空間複雜度為o(1)的原地操作,注意實現過程中的注釋和+*部分x

public class divide else

}elseelse

}head=next;

}//輸出結果時要判斷 sh是否為空,如果為空表名所有值都大於val

if(st!=null) st.next=bh;

return sh!=null?sh:bh;

}}

二、鍊錶列印

現有兩個

公升序鍊錶,且鍊錶中均

無重複元素。請設計乙個高效的演算法,列印兩個鍊錶的

公共值部分。

給定兩個鍊錶的頭指標heada和headb,請返回乙個vector,元素為兩個鍊錶的公共部分。請保證返回陣列的公升序。兩個鍊錶的元素個數均小於等於500。保證一定有公共值

思路:

public class common else

}int out=new int[list.size()];

for(int i=0;i三、鍊錶刪除

題目:現在有乙個單鏈表。鍊錶中每個節點儲存乙個整數,再給定乙個值val,把所有等於val的節點刪掉。

給定乙個單鏈表的頭結點head,同時給定乙個值val,請返回清除後的鍊錶的頭結點,保證鍊錶中有不等於該值的其它值。請保證其他元素的相對順序

public class clearvalue

head=head.next;

}listnode pre=head;

listnode cur=head.next;

listnode next=null;

while(cur!=null)else

cur=cur.next;

}return head;

}}

鍊錶相關操作

include include using namespace std 鍊錶結構體 struct listnode 是否為空 bool isempty listnode list position是否是最後乙個 bool islast listnode position,listnode list ...

鍊錶相關操作

class listnode 1.鍊錶反轉,遍歷原鍊錶,採用頭插法將數值插入新鍊錶 public listnode reverse listnode p return cur 2.兩個鍊錶相加,如 1 2 3加4 5 6等於5 7 9。思路 短的鍊錶高位用0補。public class soluti...

鍊錶相關演算法

l.add two numbers leetcode 2 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 4...