一、 链表的概念
每个节点包含本身的值和指向下一个节点(对下一个节点的值的引用),如图所示:
二、 python实现
1、定义一个Node类:
class Node(object):
def __init__(self, val):
self.data = val
self.next = None
def get_data(self):
return self.data
def set_data(self, val):
self.data = val
def get_next(self):
return self.next
pass
def set_next(self, val):
self.next = val
pass
2、链表的每个元素都是Node对象,实现如下:
class NoneSortList(object):
def __init__(self):
# 初始化链表
self.head = None
def empty(self):
# 判断链表是否为空
return self.head is None
def add(self, item):
# 链表添加元素
tmp = Node(item)
tmp.set_next(self.head)
self.head = tmp
pass
def size(self):
# 获取链表大小
current = self.head
length = 0
while current is not None:
length += 1
current = current.get_next()
return length
def search(self, item):
# 链表中查询元素
current = self.head
while current is not None:
print(current.get_data())
if current.get_data() == item:
return True
else:
current = current.get_next()
return False
def remove(self, item):
# 删除链表中元素
current = self.head
pre = None
flag = False
while not flag:
if current.get_data() == item:
flag = True
else:
pre = current # pre节点下移为当前节点
current = current.get_next() # 当前节点下移为下一个节点
if pre is None: # 如果删除的是head, head节点往后移动
self.head = current.get_next()
else: # 如果删除的是非head节点,删除当前节点后,pre的下一节点为当前节点的下一节点
pre.setNext(current.getNext())