1、单链表介绍
- 介绍:单链表通过链接节点组成,每一个节点包含数据项本身和对下一个节点的引用信息。
- 头结点:图中红色的节点为头结点head.头结点head中包含了对第一个节点的引用信息。
2、单链表的相关实现
节点的实现:主要功能有
①得到此节点的数据项getData()
②得到此节点对下一个节点的引用信息getNext()
③修改节点的数据项setData()
④修改节点对下一个节点的引用信息setNext()
class Node():
def __init__(self, initdata=None):
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:
def __init__(self):
self.head=None
#在链表开头添加元素
def add(self,item):
temp=Node(item)
temp.setNext(self.head)
self.head=temp
#判断链表是否为空
def isEmpty(self):
return self.head==None
#返回列表大小
def size(self):
current=self.head
count=0
while current !=None:
count=count+1
current=current.getNext()
return count
#查看列表中是否有item元素
def search(self,item):
current=self.head
found=False
while current!=None and not found:
if current.getData==item:
found=True
else:
current==current.getNext()
return found
#移除列表中的item元素
def remove(self,item):
current=self.head
previous=None
found=False
while not found:
if current.getData==item:
found=True
else:
previous=current
current=current.getNext()
if previous==None:#第一个就找到了,previous还是none
self.head=current.getNext()
else:
previous.setNext(current.getNext())