-
#链表的制作(包含功能: 从头部添加数据,从尾部添加数据,在中间插入数据,查看链表长度,遍历链表,反转链表,删除数据)
class Node():
def __init__(self,item):
self.item = item
self.next = None
class Link():
def __init__(self):
self.head = None
def addByHead(self,item):
node = Node(item)
node.next = self.head
self.head = node
def isEmpty(self):
return self.head == None
def addByTail(self,item):
node = Node(item)
if self.isEmpty(): #链表为空的操作
self.head = node
return
# 链表为非空的操作
pre = None
cur = self.head
while cur:
pre = cur
cur = cur.next
pre.next = node
def insertNode(self,item,pos):
node = Node(item)
pre = None
cur = self.head
if pos == 0:
self.addByHead(node)
return
for i in range(pos):
pre = cur
cur = cur.next
pre.next = node
node.next = cur
def Length(self):
count =0
cur = self.head
while cur:
cur = cur.next
count +=1
return count
def removeNode(self,item):
pre = None
cur = self.head
nextnode = cur.next
if item == self.head.item:
self.head = self.head.next
return
while cur:
if cur.item == item:
pre.next = nextnode
return
pre = cur
cur = cur.next
nextnode = cur.next
def reverse(self):
pre = None
cur = self.head
while cur:
nextnode = cur.next
cur.next = pre
pre = cur
cur = nextnode
self.head = pre
|