鍊錶由一系列不必在記憶體中相連的結構構成,這些物件按線性順序排序。每個結構含有表元素和指向後繼元素的指標。最後乙個單元的指標指向null。為了方便鍊錶的刪除與插入操作,可以為鍊錶新增乙個表頭。
刪除操作可以通過修改乙個指標來實現。
插入操作需要執行兩次指標調整。
1.1 node實現
每個node分為兩部分。一部分含有鍊錶的元素,可以稱為資料域;另一部分為一指標,指向下乙個node。
class
node
(): __slots__=['_item','_next'] #限定node例項的屬性
def__init__
(self,item):
self._item=item
self._next=none
#node的指標部分預設指向none
defgetitem
(self):
return self._item
defgetnext
(self):
return self._next
defsetitem
(self,newitem):
self._item=newitem
defsetnext
(self,newnext):
self._next=newnext
1.2 singlelinkedlist的實現
class
singlelinkedlist
():def
__init__
(self):
self._head=none
#初始化鍊錶為空表
self._size=0
1.3 檢測鍊錶是否為空
def
isempty
(self):
return self._head==none
1.4 add在鍊錶前端新增元素
def
add(self,item):
temp=node(item)
temp.setnext(self._head)
self._head=temp
def
(self,item):
temp=node(item)
if self.isempty():
self._head=temp #若為空表,將新增的元素設為第乙個元素
else:
current=self._head
while current.getnext()!=none:
current=current.getnext() #遍歷鍊錶
current.setnext(temp) #此時current為鍊錶最後的元素
1.6 search檢索元素是否在鍊錶中
def
search
(self,item):
current=self._head
founditem=false
while current!=none
andnot founditem:
if current.getitem()==item:
founditem=true
else:
current=current.getnext()
return founditem
1.7 index索引元素在鍊錶中的位置
def
index
(self,item):
current=self._head
count=0
found=none
while current!=none
andnot found:
count+=1
if current.getitem()==item:
found=true
else:
current=current.getnext()
if found:
return count
else:
raise valueerror,'%s is not in linkedlist'%item
1.8 remove刪除鍊錶中的某項元素
def
remove
(self,item):
current=self._head
pre=none
while current!=none:
if current.getitem()==item:
ifnot pre:
self._head=current.getnext()
else:
pre.setnext(current.getnext())
break
else:
pre=current
current=current.getnext()
1.9 insert鍊錶中插入元素
def
insert
(self,pos,item):
if pos<=1:
self.add(item)
elif pos>self.size():
else:
temp=node(item)
count=1
pre=none
current=self._head
while count1
pre=current
current=current.getnext()
pre.setnext(temp)
temp.setnext(current)
Python的單向鍊錶實現
思路 鍊錶由節點組成,先規定節點 node 包含data和指向下個節點的next 初始化data當然就是傳入的data了,next指向none 新增分兩種情況 鍊錶為空,那麼頭節點和尾節點都指向新插入的節點 鍊錶不為空,那麼直接在尾部新增即可 遍歷因為只有鍊錶的尾節點的next是指向none的,所以...
Python 實現單向鍊錶
鍊錶顧名思義就是 鏈 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的。跟陣列不同鍊錶不用預先定義大小,而且硬體支援的話可以無限擴充套件。陣列需要預先定義大小,無法適應資料動態地增減,資料小於定義的長度會浪費記憶體,...
python 實現無序鍊錶
一 鍊錶的概念 二 python實現 1 定義乙個node類 class node object def init self,val self.data val self.next none def get data self return self.data def set data self,v...