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表 對兩個或兩個以上,結點按元素值遞增 遞減排序的單鏈表進行操作,應採用 指標...