鍊錶的操作

2021-09-27 06:49:26 字數 2031 閱讀 2192

鍊錶的建立:

首先建立節點:

class listnode():

def __init__(self,value):

self.val=value

self.next=none

建立鍊錶:

def createlist(num):

if num<=0:

return none

head=none

val=0

node=none

while num>0:

if head is none:

head=listnode(val) #為了儲存head頭節點的位置不變化

node=head

else:

node.next=listnode(val)

node=node.next

val+=1

num-=1

return head

head=createlist(5)

while head is not none:

print("->".format(head.val),end=' ')

head=head.next

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。

輸入: 1->2->3->4->5->null, k = 2

輸出: 4->5->1->2->3->null

解釋: 向右旋轉 1 步: 5->1->2->3->4->null

向右旋轉 2 步: 4->5->1->2->3->null

思路:第一步建立節點。 第二步建立鍊錶。  第三步,建立旋轉函式。

旋轉函式的思路為:將乙個鍊錶首尾相連。然後判斷需要挪動的位置。把頭指標放到挪動後的位置。這個時候需要注意的是,此時的鍊錶仍然是首尾相連的。應該從頭節點指標位置的地方斷開。

class listnode():

def __init__(self,value):

self.val=value

self.next=none

#可以考慮先把鍊錶變成乙個環形

def xuanzhuan(head,k):

p=head

count=1

while p.next !=none:

p=p.next

count+=1

p.next=head

k%=count #移動的位數

for i in range(count-k-1):

head=head.next

#斷開p=head

head=head.next

p.next=none

return head

def createlist(num):

if num<=0:

return none

head=none

# val=0

val=1

node=none

while num>0:

if head is none:

head=listnode(val) #為了儲存head頭節點的位置不變化

node=head

else:

node.next=listnode(val)

node=node.next

val+=1

num-=1

return head

head=createlist(5)

p=head

while p is not none:

print("->".format(p.val),end=' ')

p=p.next

print()

head=xuanzhuan(head,2)

while head is not none:

print("->".format(head.val),end=' ')

head=head.next

鍊錶的操作

鍊錶是資料結構中的乙個重要組成部分,對鍊錶操作的熟練度怎麼要求都不過分。只有部分核心 主要內容 1 鍊錶的建立 2 鍊錶的釋放 3 鍊錶的查詢 4 鍊錶中節點的插入 5 鍊錶中節點的刪除 6 鍊錶的反轉 7 兩個鍊錶的連線 define max 15 節點宣告 struct list typedef...

鍊錶的操作

結點0為頭結點,不儲存有意義的資料 從結點1開始儲存有意義的資料 include include includetypedef struct node node,pnode pnode create list 建立乙個新鍊錶 void show list pnode 遍歷顯示鍊錶 void add ...

鍊錶的操作

鍊錶是面試中常考的型別,因為只有幾行就可以了。下面是一些鍊錶 keshan.cpp 定義控制台應用程式的入口點。include stdafx.h include include define null 0 define len sizeof struct node struct node 列印鍊錶 ...