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