日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用python 中的链表 实现 截取其中一部分_Python数据结构——链表的实现

發布時間:2025/3/19 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python 中的链表 实现 截取其中一部分_Python数据结构——链表的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈表由一系列不必在內存中相連的結構構成,這些對象按線性順序排序。每個結構含有表元素和指向后繼元素的指針。最后一個單元的指針指向NULL。為了方便鏈表的刪除與插入操作,可以為鏈表添加一個表頭。

刪除操作可以通過修改一個指針來實現。

插入操作需要執行兩次指針調整。

1. 單向鏈表的實現

1.1 Node實現

每個Node分為兩部分。一部分含有鏈表的元素,可以稱為數據域;另一部分為一指針,指向下一個Node。

class Node():

__slots__=['_item','_next'] #限定Node實例的屬性

def __init__(self,item):

self._item=item

self._next=None #Node的指針部分默認指向None

def getItem(self):

return self._item

def getNext(self):

return self._next

def setItem(self,newitem):

self._item=newitem

def setNext(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

1.5 append在鏈表尾部添加元素

def append(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 and not 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 and not 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:

if not 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():

self.append(item)

else:

temp=Node(item)

count=1

pre=None

current=self._head

while count

count+=1

pre=current

current=current.getNext()

pre.setNext(temp)

temp.setNext(current)

全部代碼

class Node():

__slots__=['_item','_next']

def __init__(self,item):

self._item=item

self._next=None

def getItem(self):

return self._item

def getNext(self):

return self._next

def setItem(self,newitem):

self._item=newitem

def setNext(self,newnext):

self._next=newnext

class SingleLinkedList():

def __init__(self):

self._head=None #初始化為空鏈表

def isEmpty(self):

return self._head==None

def size(self):

current=self._head

count=0

while current!=None:

count+=1

current=current.getNext()

return count

def travel(self):

current=self._head

while current!=None:

print current.getItem()

current=current.getNext()

def add(self,item):

temp=Node(item)

temp.setNext(self._head)

self._head=temp

def append(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為鏈表最后的元素

def search(self,item):

current=self._head

founditem=False

while current!=None and not founditem:

if current.getItem()==item:

founditem=True

else:

current=current.getNext()

return founditem

def index(self,item):

current=self._head

count=0

found=None

while current!=None and not 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

def remove(self,item):

current=self._head

pre=None

while current!=None:

if current.getItem()==item:

if not pre:

self._head=current.getNext()

else:

pre.setNext(current.getNext())

break

else:

pre=current

current=current.getNext()

def insert(self,pos,item):

if pos<=1:

self.add(item)

elif pos>self.size():

self.append(item)

else:

temp=Node(item)

count=1

pre=None

current=self._head

while count

count+=1

pre=current

current=current.getNext()

pre.setNext(temp)

temp.setNext(current)

if __name__=='__main__':

a=SingleLinkedList()

for i in range(1,10):

a.append(i)

print a.size()

a.travel()

print a.search(6)

print a.index(5)

a.remove(4)

a.travel()

a.insert(4,100)

a.travel()

總結

以上是生活随笔為你收集整理的用python 中的链表 实现 截取其中一部分_Python数据结构——链表的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。