資料結構與演算法 鍊錶

2021-08-28 20:44:15 字數 1685 閱讀 7490

反轉鍊錶

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...