python實現演算法導論 鍊錶

2021-10-03 09:26:12 字數 2008 閱讀 1979

1.雙向鍊錶(無哨兵):

#linked_list鍊錶

class

linked_list

(object):

def__init__

(self)

: self.head =

none

#insert方法將obj連線到鍊錶前端:

definsert

(self,obj):if

isinstance

(obj,list_obj)

: obj.

next

= self.head

if self.head !=

none

: self.head.prev = obj

self.head = obj

obj.prev =

none

else

:print

('請輸入合法物件!'

)#delete方法將obj刪除:

defdelect

(self,obj):if

isinstance

(obj,list_obj)

:if obj.prev !=

none

: obj.prev.

next

= obj.

next

else

: self.head = obj.

next

if obj.

next

!=none

: obj.

next

.prev = obj.prev

else

:print

('鍊錶中找不到此元素!'

)#search方法查詢key為k的鍊錶物件:

defsearch

(self,key)

: x = self.head

while x.key != key and x !=

none

: x = x.

next

return x

#輸出鍊錶:

defprint_list

(self)

: x = self.head

while x !=

none

:print

(x,end=

' -> '

) x = x.

next

print

(none

)#鍊錶元素:

class

list_obj

(object):

def__init__

(self,key,prev=

none

,next

=none):

self.key = key

self.prev = prev

self.

next

=next

def__str__

(self)

:return

str(self.key)

l = linked_list(

)#鍊錶插入

obj1 = list_obj(1)

l.insert(obj1)

obj2 = list_obj(

)l.insert(obj2)

l.print_list(

)#鍊錶查詢

print

(type

(l.search(1)

))#鍊錶刪除

l.delect(obj2)

l.print_list(

)l.delect(obj1)

l.print_list(

)

演算法導論12 佇列的鍊錶實現 2016 1 12

普通的鍊錶佇列和棧的實現差不多,只是修改一下進出的規則即可。感覺自己就像在翻譯演算法導論的偽 一樣。不過還好吧,也有一點自己的理解 下面是 include include typedef struct nodenode struct queue q void build struct queue q...

排序演算法 鍊錶實現

陣列的高效體現於隨機訪問,插排 快排等排序演算法未用到這一特點,故這兩種排序演算法可基於鍊錶實現 插入排序 迭代器 p順序訪問鍊錶 迭代器 i順序訪問前 p 個元素 主要的操作為 當p i p.value刪除原位置的 p將p插入 i 1 與 i 之間 若為單向鍊錶,儲存 i 1與 p 1 演算法複雜...

演算法實現 鍊錶(二)

public class reversepartlinked public static node reversepartlinked node head,int from,int to if head null from to from 1 to count node pre fpre null?...