定義無順序列表的類
代碼如下:
class Node:
? ? def __init__(self,initdata):
? ? ? ? self.data = initdata
? ? ? ? self.next = None
? ? def getData(self):
? ? ? ? return self.data
? ? def getNext(self):
? ? ? ? return self.next
? ? def setData(self,newdata):
? ? ? ? self.data = newdata
? ? def setNext(self,newnext):
? ? ? ? self.next = newnext
class UnorderedList: #append,index,insert,pop
? ? def __init__(self):
? ? ? ? self.head = None
? ? def isEmpty(self): #判斷鏈表是否為空
? ? ? ? return self.head==None
? ? def add(self,item): #在鏈表頭添加節(jié)點(diǎn)
? ? ? ? temp = Node(item)
? ? ? ? temp.setNext(self.head)
? ? ? ? self.head = temp
? ? def size(self): #元素個(gè)數(shù)
? ? ? ? temp = self.head
? ? ? ? count = 0
? ? ? ? while temp:
? ? ? ? ? ? count +=1
? ? ? ? ? ? temp = temp.getNext()
? ? ? ? return count
? ? def search(self,item):#查詢
? ? ? ? temp = self.head
? ? ? ? flag = False #判斷是否存在
? ? ? ? while temp and not flag:
? ? ? ? ? ? if temp.data == item:#temp.data
? ? ? ? ? ? ? ? flag = True
? ? ? ? ? ? temp = temp.getNext() #temp.next
? ? ? ? return flag
? ? def remove(self,item):#刪除,沒有返回值
? ? ? ? current = self.head
? ? ? ? previous = None
? ? ? ? found = False
? ? ? ? while current and not found:
? ? ? ? ? ? if current.getData() == item:
? ? ? ? ? ? ? ? found = True
? ? ? ? ? ? ? ? break
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? previous = current
? ? ? ? ? ? ? ? current = current.getNext()
? ? ? ? if previous == None:
? ? ? ? ? ? self.head = current.getNext()
? ? ? ? else:
? ? ? ? ? previous.setNext(current.getNext())
list = [1,2,3,4,5,6,7]
link_list = UnorderedList()
for i in range(len(list)):
? ? link_list.add(list[i])
num = 11
print(link_list.search(num))
print(link_list.size())
運(yùn)行結(jié)果為:
False
7