手写下单链表&几个简单功能。
# coding:utf-8
class Node(object):
def __init__(self, val):
self.val = val
self.next = None
class List(object):
def __init__(self):
self.head = None
def add(self, val):
node = Node(val)
if not self.head:
self.head = node
else:
cur = self.head
while cur.next:
cur = cur.next
cur.next = node
def dele(self, val):
"""delete element"""
cur = self.head
if val == self.head.val: # just head node
self.head = self.head.next
else:
pre = None
while cur.next:
if cur.val != val:
pre = cur; cur = cur.next # continue scan the link
else:
pre.next = cur.next; break # delete it and break loop
def insert(self, n, val):
"""指定位置添加元素"""
node = Node(val)
if n == 0:
node.next = self.head; self.head = node # 刚好是头部
else:
pre = None;
cur = self.head
for i in range(n):
if cur.next:
pre = cur;
cur = cur.next
else: # 超出链长度, 加在最后
cur.next = node; break
# 链中指定位置添加
pre.next = node
node.next = cur
if __name__ == "__main__":
l1 = List()
for i in range(13):
l1.add(i)
l1.dele(2)
l1.insert(2, 10)
cur = l1.head
while cur:
print(cur.val)
cur = cur.next