今天剛用c++寫完數據結構單鏈表描述,然後無聊的情況下,編寫了python版本,當然裏面很多功能我沒有完全實現,只是寫了些簡單的單鏈表那讓我們看看吧.
基礎理論這裏就不講解了,讓我們上代碼吧:
#定義了節點
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 SingleList():
def __init__(self):
self._head = None #初始化爲空鏈表
def isEmpty(self):
return self._head == None
def Length(self):
current = self._head
count = 0
while current != None:
count += 1
current = current.getNext()
return count;
def ShowList(self):
current = self._head
while current != None:
print(current.getItem(), end=" ")
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) #這個時候爲最後的元素
def search(self, item):
current = self._head
find = False
while current!= Node and not find:
if current.getItem() == item:
find = True
else:
current = current.getNext()
return find
def index(self,item):
current = self._head
count = 0
find = False
while current != Node and not find:
count += 1
if current.getItem() == item:
find = True
else:
current = current.getNext()
if find:
return count
else:
raise Exception('%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.Length():
self.append(item)
else:
temp = Node(item)
count = 1
pre = None
current = self._head
while count < pos:
count +=1
pre = current
current = current.getNext()
pre.setNext(temp)
temp.setNext(current)
主函數:
if __name__ == '__main__':
a = SingleList()
for i in range(1,10):
a.append(i)
print(a.Length())
a.ShowList()
print('')
print(a.search(2))
print(a.index(5))
a.remove(4)
a.ShowList()
print()
a.insert(3,100)
a.ShowList()
輸出結果:
9
1 2 3 4 5 6 7 8 9
True
5
1 2 3 5 6 7 8 9
1 2 100 3 5 6 7 8 9
喜歡的話可以關注我的博客,一起加油。