反轉鍊錶
def reverse(head):
q=none
p=heap
while p:
temp=p.next
p.next=q
q=pp=temp
return p
判斷鍊錶環
def meetingnode(head):
if not head:
return
slow=head
fast=head.next
while fast and fast.next:
if fast==slow:
return slow
slow=slow.next
fast=fast.next.next
return none
環的入口
def entry(head):
meet=meetingnode(head)
if not meet:
return none
count=1
p=meet
while p.next!=meet:
p=p.next
count+=1
a=head
b=head
for i in range(count):
a=a.next
while a!=b:
a,b=a.next,b.next
return a
合併鍊錶
#合併兩個有序
class solution:
# 返回合併後列表
def merge(self, phead1, phead2):
# write code here
if phead1==none:
return phead2
if phead2==none:
return phead1
if phead1.val兩鍊錶的公共節點
#計算長度
def intersection(head1,head2):
a,b=head1,head2
l1=l2=0
while a:
a=a.next
l1+=1
while b:
b=b.next
l2+=1
a,b=head1,head2
if l1>l2:
for i in range(l1-l2):
a=a.next
elif l1奇偶鍊錶
#奇數維節點在前,偶數字放後面,並保證順序不變
def oddevenlist(head):
d1=odd=listnode(0)
d2=even=listnode(0)
i=1while head:
if i%2:
odd.next=head
odd=head
else:
even.next=head
even=head
head=head.next
i+=1
odd.next=d2.next
even.next=none
return d1.next
資料結構與演算法 鍊錶
題目 合併兩個已經排序好的鍊錶 非遞迴和遞迴兩種 方法1 cpp view plain copy print color 000000 合併鍊錶.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std struct listnod...
資料結構與演算法 鍊錶
在講述鍊錶之前讓我們對資料結構進行乙個簡單的回顧 我們知道,資料結構指的是描述實際問題中各個資料項節點之間的前後邏輯結構關係,即要麼是線性結構 即某一資料項的前繼節點和後繼節點有且只有乙個 要麼是非線性結構 即某一資料節點的前驅或者後繼節點不止乙個 在確定了實際資料項的資料結構之後,我們要採用某種儲...
資料結構與演算法 鍊錶
鍊錶 優點 插入刪除快 缺點 不支援隨機訪問 messagequeue 插入 enqueuemessage 按照時間順序插入 刪除 next mahjong.class author csy created by csy on 2019 1 28.public class mahjong overr...