数据结构–单链表python实现
用python实现单链表。在面试中遇到过链表题,当时需要自己构造链表,发现自己以前一看就明白,一写就拉跨。。。所以从零开始自己写一下,也锻炼下自己的(辣鸡)代码能力。先简单实现链表,后续功能会不断添加
- 下面是最简单的构造出一个链表,,使用while循环直接往上添加
class listNode:
def __init__(self, x):
self.val = x
self.next = None
##生成一个1-8的链表,无头节点
data = []
for i in range(1,9):
data.append(i)
#生成链表,值为1-8
head = listNode(data[0])
i, cur = 1, head
while i < 8:
node = listNode(data[i])
cur.next = node
i += 1
cur = cur.next
#输出链表
tmp = head
while tmp:
print(tmp.val, end='->')
tmp = tmp.next
#结果为1->2->3->4->5->6->7->8->None
- 如果不想这么暴力直接,有更优雅一些的方法
class listNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def getlist(self, list_val):
if list_val:
node = listNode(list_val.pop(0))
node.next = self.getlist(list_val)
return node
data = [1,2,3,4,5,6]
#直接喂入list,构造链表
p = Solution().getlist(data)
#输出链表
cur = p
while cur != None:
print(cur.val, end=' ')
cur =cur.next
- 上面都只是构造链表,还没有功能,下面是有全套功能的单链表,如增删查改等。
class listNode:
def __init__(self,x):
self.val = x
self.next = None
class SingleLink:
def __init__(self, node=None):
self.__head = node
#链表是否为空
def is_empty(self):
return self.__head == None
#在头部添加元素
def add(self, item):
node = listNode(item)
node.next = self.__head
self.__head = node
......未完待续