Task02 順序表和煉表

2021-10-02 00:27:22 字數 2094 閱讀 6560

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:輸入:1->2->4, 1->3->4

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

def

mergetwolists

(self, l1, l2)

:if l1 is

none

:return l2

elif l2 is

none

:return l1

elif l1.val < l2.val:

l1.next

= self.mergetwolists(l1.

next

, l2)

return l1

else

: l2.

next

= self.mergetwolists(l1, l2.

next

)return l2

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

def

removenthfromend

(self, head, n):if

not head or n<=0:

#鍊錶為空或者n無效

return head

p = listnode(-1

)#建造乙個虛擬節點,方便邊界處理

p.next

= head

#一次遍歷得到鍊錶長度

a = p

k =0while a.

next

: a = a.

next

k = k+

1if k#n無效

return head

#二次遍歷找到需要刪除的節點

b = p

num = k-n #需刪除的前乙個節點位置

while num >0:

b = b.

next

num = num-

1 b.

next

= b.

next

.next

#將指標指向刪除節點的後一位

return p.

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

def

rotateright

(self, head, k):if

not head:

return

none

ifnot head.

next

:return head

old_tail = head

n =1while old_tail.

next

:#計算鍊錶長度

old_tail = old_tail.

next

n = n+

1 old_tail.

next

= head #構造成環狀

new_tail = head

m = n - k % n -

1while m:

new_tail = new_tail.

next

#新的尾結點的位置

m = m-

1 new_head = new_tail.

next

#新的頭結點的位置

new_tail.

next

=none

#切斷這個環

return new_head

順序表和煉表

定義 線性表是由n個具有相同特性的資料元素組成的有限序列,表中每個元素具有相同元素。邏輯上為連續的線性結構。常見的線性表 順序表,鍊錶 棧 佇列 字串 線性表根據物理儲存方式分為 順序表和煉表 線性表在邏輯上是線性結構,在物理上並不是連續的,線性表在物理上儲存時,通常是以陣列和鏈式結構的形式儲存。動...

順序表和煉表

1.名詞解釋 資料 對客觀事物的符號表示 資料元素 資料的基本單位,可由若干個資料項組成 資料項 資料的不可分割的最小單位 資料物件 性質相同的資料元素的集合,是資料的子集 資料結構 相互之間存在特定關係的資料元素的集合 關係描述資料元素之間的邏輯關係 物理結構 儲存結構 資料結構在計算機中的表示 ...

c 順序表和煉表

這節來說下順序表和煉表 1 集合中必存在唯一的 第乙個元素 2 集合中必存在唯一的 最後乙個元素 3 除第乙個元素外,其他的元素都只有乙個後繼 4 除最後乙個元素外,其他的元素都只有乙個前驅 把線性表中的節點按照邏輯次序儲存在一組連續的位址單元中,在計算機中以陣列的形式儲存的線性表。在順序表中每個節...