数据结构之python实现单链表具体实例

题目如下:

在这里插入图片描述

pyhton实现:

class StudentNode:
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex
        self.next = None
class SLL:
    def __init__(self):
        self.head = StudentNode(None,None)
    '''创建单链表(包含全部信息)'''
    def CreateStudentSLL(self):
        print("请输入数据按回车键确定,按“#”结束")
        Element = input("请输入姓名和性别(以空格隔开):")
        cNode = self.head
        while Element != "#":
              Name = Element.split(" ")[0]
              Sex = Element.split(" ")[1]
              nNode = StudentNode(Name,Sex)
              cNode.next = nNode
              cNode = cNode.next
              Element = input("请输入姓名和性别(以空格隔开):")
    '''拆分单链表(拆分为两个小分队)'''
    def DivideSLL(self,LinkedListB,LinkedListC):
        aNode = self.head
        bNode = LinkedListB.head
        cNode = LinkedListC.head
        pos = 0
        while aNode.next != None:
              aNode = aNode.next
              pos = pos+1
              if pos % 2 == 1:
                  bNode.next = aNode
                  bNode = bNode.next
              else:
                 cNode.next = aNode
                 cNode= cNode.next
        bNode.next = None
        cNode.next = None
    '''遍历单链表'''
    def TravereSLL(self):
        cNode = self.head.next
        while cNode.next != None:
            print(cNode.name,"->",end = " ")
            cNode = cNode.next
        print(cNode.name)
    '''获取链表长度'''
    def Getlength(self):
        cNode = self.head
        length = 0
        while cNode.next != None:
            length+=1
            cNode = cNode.next
        return length   
    '''打印结果'''
    def PrintSLL(self):
        cNode = self.head.next
        if cNode.sex == "男":
           print("男生小分队包含",self.Getlength(),"个人,分别是:")
           self.TravereSLL()
        else:
           print("女生小分队包含",self.Getlength(),"个人,分别是:")   
           self.TravereSLL()
if __name__ == "__main__":
    LA = SLL()
    LB = SLL()
    LC = SLL()
    LA. CreateStudentSLL()
    LA.DivideSLL(LB,LC)
    LB.PrintSLL()
    LC.PrintSLL()

结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40283816/article/details/87551503