class Node(object):
def __init__(self,elem):
self.elem = elem
self.next = None
#属性
class SingleLinkList(object):
def __init__(self,node = None):
self._head = node
#一个单链表的私有方法头结点指向空
def is_empty(self):
return self._head ==None
def length(self):
Cur = self._head
count = 0
while Cur != None:
count+=1
Cur = Cur.next
return count
#已经包含空链表的情况
def travel(self):
#遍历
Cur = self._head
while Cur != None:
print(Cur.elem,end=' ')
Cur = Cur.next
print('')
def append(self,item):
node = Node(item)
if self.is_empty():
self._head = node
else:
Cur = self._head
while Cur.next != None:
Cur = Cur.next
Cur.next = node
def add(self,item):
node = Node(item)
node.next = self._head
self._head = node
def insert(self,pos,item):
node = Node(item)
cur = self._head
if pos<=0:
self.add(item)
return
elif pos > self.length():
self.append(item)
else:
curpos = 0
while curpos != pos:
curpos+=1
pre = cur
cur = cur.next
node.next = cur
pre.next = node
def Search(self,item):
cur = self._head
while cur != None:
if cur.elem == item:
return True
else:
cur = cur.next
return False
def remove(self,itme):
pre = None
cur = self._head
if self.Search(itme):
while cur != None:
if cur.elem == itme:
if cur == self._head:
self._head = cur.next
else:
pre.next = cur.next
break
else:
pre = cur
cur = cur.next
else:
raise Exception('Not include !!!')
相对于 顺序表,链表的优点就是可以不要求内存连续。可以有效利用内存。