单链表
单链表的结点是一个二元组,形式如下:
其表元素elem保存着作为表元素的数据项(或者数据项的关联信息),链接域next里保存同一个表里的下一结点的标识。
结点类的定义如下:
#定义一个链表地结点类LNode
class LNode:
def __init__(self,elem,next_=None):
self.elem=elem
self.next=next_
llist1=LNode(1) #结点类的运用
p=llist1
for i in range(2,11):
p.next=LNode(i) #将结点串成链
p=p.next
p=llist1
while p is not None:
print(p.elem)
p=p.next
要想掌握一个单链表,就需要(也只需要)掌握这个表的首结点,从它出发就可以找到这个表的第一个元素(即这个表结点保存的数据,保存在它的elem域中),还可以找到表里的下一个结点(有关信息保存在这个结点的next域中)。按这样下去就可以找到表里的所有元素。
下面代码为一个单链表对象,并定义了基本的链表操作:
#异常报错
class LinkedListunderflow(ValueError):
pass
class Llist:
def __init__(self):
self._head=None
#判断是否为空链表
def is_empty(self):
return self._head is None
#表头插入数据
def prepend(self,elem):
self._head = LNode(elem, self._head)
#删除