无序列表支持的操作
List()
add(item)
remove(item)
search(item)#返回布尔值
index(item)#返回下标
isEmpty()
length()
append(item)
insert(pos,item)
pop()
pop(pos)
无序列表需要维护元素间的相对关系,而不需要在连续的空间位置维护这些信息
链表
Node类
class Node:
def __init__(self,item):
self.data=item
self.next=None
def getData(self):
return self.data
def getNext(self):
return self.next
def setD ata(self,item):
self.data=item
def setNext(self, node1)
self.next=node1
UnorderedList类
列表类里不包含任何节点对象,只包含指向整个链表结构第一个节点的引用。
class UnOrderedList:
def __int__(self):
self.head=None
def isEmpty(self):
return self.head==None
def add(self,data):
temp=Node(data)
temp.setNext(self.head)
self.head=temp
def length(self):
count=0
current=self.head
while current != None
count+=1
current=current.getNext()
return count
def search(self,item):
found=False
current=self.head
while current != None and not found:
if current.getData==item:
found=True
else:
current=current.getNext()
return found
def remove(self,item):
pre=None
current=self.head
stop=False
while not stop:
if current.getData()==item:
stop=True
else:
pre=current
current=current.getNext()
if pre=None:
self.head=current.getNext()
else:
pre.setNext(current.getNext())
在有序列表中,元素的相对位置取决于数据的特征,通常以升序或者降序排列
操作没有insert,因为add已经包含了位置信息,通过元素之间比大小
class OrderedList:
def __init__(self):
self.head=None
def search(self,item):
found=False
current=self.head
stop=False
while current!=None and not found and not stop:
if current.getData()==item:
found=True
elif current.getData()>item:
stop=True
else:
current=current.getNext()
return found
def add(self,item):
stop=False
pre=None
current=self.head
while current!=None and not stop:
if current.getData() > item:
stop=True
else:
pre=current
current=current.getNext()
temp=Node(item)
if pre==None:
temp.setNext(current)
self.head=temp
else:
temp.setNext(current)
pre.setNext(temp)