单向链表的Python实现

class HeroNode:
    # 构造器
    def __init__(self,hNo,name,nickname):
        self.no = hNo
        self.next = None
        self.name = name
        self.nickname = nickname
# 为了显示方便重写str
    def __str__(self):
        return "HeroNO:"+str(self.no)+" HeroName:"+str(self.name)+" Nickname: "+str(self.nickname)

class SingleLinkedList:
    # 初始化头节点
    head = HeroNode(0,"","")
    #添加节点到单向列表
    # 思路:当不考虑链表顺序时
    # 1.找到当前链表的最后节点
    # 2.找到最后这个节点的next 指向新的节点
    def add(self,heroNode):

        #因为head节点不能动,因此我们需要一个辅助遍历的Temp
        temp = self.head
        #遍历链表,找到最后
        while(True):
            #找到链表的最后
            if temp.next == None:
                break
            temp = temp.next
        #当退出While循环时,temp就指向了链表的最后
        temp.next = heroNode

    #显示链表【遍历】
    def list(self):
        #判断链表是否为空
        if(self.head.next == None):
            print("链表为空")
            return
        #因为头节点不能动,所以我们使用一个辅助变量来遍历
        temp = self.head.next
        while(True):
            #判断是否到了链表的尾部
            if(temp == None):
                break
            #输出节点信息
            print(temp)
            temp = temp.next

def main():
    #进行测试
    #先创建节点
    hero1 = HeroNode(1,"宋江","及时雨")
    hero2 = HeroNode(2,"卢俊义","玉麒麟")
    hero3 = HeroNode(3,"吴用","智多星")
    hero4 = HeroNode(4,"林冲","豹子头")

    #创建要给链表
    singleLinkedList = SingleLinkedList()
    #加入节点
    singleLinkedList.add(hero1)
    singleLinkedList.add(hero2)
    singleLinkedList.add(hero3)
    singleLinkedList.add(hero4)

    #显示节点
    singleLinkedList.list()

if __name__ == '__main__':
    main()








你可能感兴趣的:(单向链表的Python实现)