單鏈表習題(下)

2021-10-05 21:26:26 字數 2028 閱讀 4959

public

void

display

(node newhead)

system.out.

println()

;}public node deleteduplication()

cur = cur.

getnext()

;}else

}//此處tmp表示單鏈表的尾巴,如果未置為null,那麼列印時會出現死迴圈

tmp.

setnext

(null)

;//node為虛擬節點,此處的返回值為了防止原單鏈表的head就是重複節點

return node.

getnext()

;}public

static

void

main

(string[

] args)

}

public

boolean

chkpalindrome()

//接下來對中間位置靠右邊的data進行逆置

node cur = slow.

getnext()

;while

(cur != null)

//判斷是否為回文結構

while

(this

.head != slow)

//偶數情況if(

this

.head.

getnext()

== slow)

this

.head =

this

.head.

getnext()

; slow = slow.

getnext()

;}return

true

;}

public

class

testdemo

public

static node getintersectionnode

(node heada,node headb)

node pl = heada;

//長的單鏈表

node ps = headb;

//短的單鏈表

int la =0;

//表示a鍊錶的長度

int lb =0;

//求鍊錶的長度

while

(pl != null)

while

(ps != null)

//此時pl,ps均為null,然後要將將它們指回原來的heada,headb

pl = heada;

ps = headb;

//找到較長的單鏈表,並讓此單鏈表先走差值步

int len = la - lb;

if(len <0)

//可以保證pl指向了長的單鏈表

while

(len >0)

while

(pl != ps)

if(pl != null && ps != null && ps == pl)

return null;

}public

static

void

main

(string[

] args)

}

//創造環

public

void

createloop()

cur.

setnext

(this

.head.

getnext()

.getnext()

);}public

boolean

hascycle()

}if(fast == null || fast.

getnext()

== null)

return

true

;}

單鏈表習題

class linkedlist else 尾插法 public void addlast int data else cur.next node 找到index 1位置的節點 返回的是index 1位置的節點的引用 param index return private node searchind...

單鏈表基礎面試題(下篇)

刪除鍊錶中重複的結點 判斷乙個鍊錶是否為回文鍊錶 判斷是否有環 複製帶隨機指標的鍊錶 cur head while cur else cur copy next rlnode newhead,tail newhead tail rlnode malloc sizeof rlnode cur head...

單鏈表習題整理(七)

假設有兩個按元素值遞增有序排列的線性表a和b,均以單鏈表作儲存結構,請編寫演算法將a表和b表歸併成乙個按元素值遞減有序 即非遞增有序,允許表中含有值相同的元素 排列的線性表c,並要求利用原表 即a表和b表 的結點空間構造c表 對兩個或兩個以上,結點按元素值遞增 遞減排序的單鏈表進行操作,應採用 指標...