之前实现链表都是用 c语言实现的,遇到Python实现链表就懵逼了。。。。
学会实现单链表之前,首先要学会Python 的类与对象。链表就是用Python 的类和对象实现的。
所谓的指针就是地址值,而Python创建一个对象,再打印这个对象也是地址值。
class student(object):
pass
tian = student()
print(tian)#<__main__.student object at 0x0000027B8790FFD0>
首先要构建结点(这不相当于模拟c中的结构体吗)
class Node(object):
def __init__(self,x):
self.data = x
self.next = Node
再创建一个类,用来操作链表,比如创建链表,遍历链表等等。。。
首先初始化头结点(其实就是创建个类)
class SingleLinkedList(object):
def __init__(self):
self.head = Node(None)
创建链表
def CreateSingleLinkedList(self):
tNode = self.head #想当于指针
Element = input("请输入数值")
while Element!='#':
cNode = Node(int(Element))#创建个对象 也就是创建个结点
tNode.next = cNode
tNode = tNode.next #指针向后移
Element = input("请输入数值")
遍历列表
def TraverseElement(self):
cur = self.head
while cur.next!=None:
print(cur.data)
cur = cur.next
其他就不多说了,明白原理了就很简单。
完整代码如下:
class Node(object):
def __init__(self,x):
self.data = x
self.next = Node
class SingleLinkedList(object):
def __init__(self):
self.head = Node(None)
def CreateSingleLinkedList(self):
tNode = self.head #想当于指针
Element = input("请输入数值")
while Element!='#':
cNode = Node(int(Element))#创建个对象 也就是创建个结点
tNode.next = cNode
tNode = tNode.next #指针向后移
Element = input("请输入数值")
def TraverseElement(self):
cur = self.head
while cur.next!=None:
print(cur.data)
cur = cur.next