参考自 MOOC数据结构与算法Python版
函数 | 含义 |
---|---|
OrderedList() | 创建一个空的有序表 |
add(item) | 在表中添加一个数据项,并保持整体顺序,item原不存在 |
remove(item) | 从有序表中移除一个数据项,item应存在,有序表被修改 |
search(item) | 在有序表中查找item,返回布尔类型值 |
isEmpty() | 返回OrderedList是否为空 |
size() | 返回表中包含数据项的个数 |
index(item) | 返回数据项在表中的位置,item应存在 |
pop() | 从有序表末尾移除数据项,假设原表至少有1个数据项 |
pop(pos) | 移除位置为pos的数据项,假设原表存在位置pos |
代码如下:
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
def add(self, item):
current = self.head
previous = None
stop = False
###发现插入位置#####
while current != None and not stop:
if current.getData()>item:
stop = True
else:
previous = current
current = current.getNext()
temp = Node(item)
###插入在表头###
if previous == None:
temp. setNext(self.head)
self.head = temp
###插入在表中###
else:
temp.setNext(current)
previous.setNext(temp)
def size(self):
current = self.head
count = 0
while current!=None:
count += 1
current = current.getNext()
return count
def search(self,item):
current = self.head
found = False
while current != None and not found and not stop:
if current.getData() == item:
found = True
else:
if current.getData()>item:
stop = True
else:
current = current.getNext()
return found
链表实现的算法分析
对于一个包含节点数为n的链表