资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python单链表的实现-创新互联

'''
当加入第一个node节点的时候,会有几个值,(这里的self.tail.next 其实就是node.next)
head = item = tail = Node(object element1 memory)
item = head = tail = Node(object element1  memory)
next = None
tail = item = head = Node(object element1  memory)

当加入第二个元素node节点的时候,next1值会改变,tail会向后漂移,head将会保留
新加入第二个元素后第一个节点变成了
head = item1 = Node(object element1  memory)
item1= head = Node(object element1  memory)
next = Node(object element2  memory)

第二个节点为:
item = tail =  Node(object element2  memory)
next =  Node(object element2  memory)
tail = item =  Node(object element2  memory)

当加入第三个元素的时候,tail.next继续为None item为新元素tail结束元素为新元素,
item = tail =  Node(object element3  memory)
next = None
tail = item =  Node(object element3  memory)
'''

class Node:
    def __init__(self,item,next=None):
        self.item = item #记录元素
        self.next = next #记录下一跳节点

    #为了输出 我们可以看到的结果:
    def __repr__(self):
        return '{} ==> {}'.format(self.item,self.next)

class LinkedList:
    def __init__(self):
        self.head= None
        self.tail = None

    def append(self,value):
        #添加链表前需要,实例化一个节点,来进行赋值
        node = Node(value) #实例化节点
        #添加链表,首先判断链表是否为空,
        # 空列表时 head= tail = None
        #添加元素后head = value = tail = Node(value) = node
        if self.head == None:
            self.head = node
            # self.tail = node
        #当链表不为空时向后添加,既是向后添加,添加后的值为
        # self.tail.next = Node(last(value)).next = node
        #要知道self.tail值的改变是不应为append的改变而改变了,只是再重新赋值之后才会改变的
        # self.tail = node #现在的结尾部分被重新赋值
        else:
            self.tail.next = node #如果添加的是最后一位,next就是默认值既是None
            # self.tail = node
        # if和slse有公共部分self.tail = node可以直接提出来,
        self.tail = node

    def iternode(self):
        #这里的迭代可以使用我们定义好的方法来做,因为每个node节点都有next可以调用下一个节点,因此我们可以利用这一特性来做迭代
        #因为我们不知道需要迭代的个数有多少个,因此只能使用yield配合while循环来做,然后使用节点的下一个来重赋值,知道current为None,while循环结束
        current = self.head
        while current:
            yield current
            current = current.next
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
for i in ll.iternode():
    print(i)

输出结果为:

创新互联于2013年创立,先为库尔勒等服务建站,库尔勒等地企业,进行企业商务咨询服务。为库尔勒企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
1 ==> 2 ==> 3 ==> None
2 ==> 3 ==> None
3 ==> None

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:python单链表的实现-创新互联
链接分享:http://cdkjz.cn/article/hehih.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220