求助:python单链表的遍历与长度计算

python题目:
建立非空单链表,完成遍历操作,并且计算单链表的长度。
输入格式:
输入数据有多组,每组数据占一行:
每行数字表示单链表的各个结点值(数字个数不会超过100个),以0结束一个
单链表的输入;
例如:123450代表一个长度为5的单链表。
若遇到-1,则结束数据的输入。
输出格式:
每组输出占两行,第一行输出单链表的长度,第二行输出该单链表,每两个结点值之间有""。

参考GPT和自己的思路:

好的,针对这个问题,我可以给出以下的解答:

首先,我们需要定义一个节点类来保存单链表结点的信息,同时定义一个单链表类来实现单链表的建立、遍历和长度计算等功能。具体代码如下:

# 定义一个节点类
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 定义一个单链表类
class LinkedList:
    def __init__(self):
        self.head = None

    # 建立单链表
    def createList(self):
        nums = input().split()
        for num in nums:
            if num == '0':
                break
            node = ListNode(int(num))
            if not self.head:
                self.head = node
            else:
                cur = self.head
                while cur.next:
                    cur = cur.next
                cur.next = node

    # 遍历单链表
    def traverse(self):
        cur = self.head
        while cur:
            print(cur.val, end=' ')
            cur = cur.next
        print()

    # 计算单链表长度
    def length(self):
        cnt = 0
        cur = self.head
        while cur:
            cnt += 1
            cur = cur.next
        return cnt

然后,我们可以通过以下的代码来测试单链表的建立、遍历和长度计算功能:

while True:
    lst = LinkedList()
    try:
        lst.createList()
    except:
        break
    length = lst.length()
    print(length)
    lst.traverse()

这段代码可以持续输入多组单链表,每输入一组单链表就会输出该单链表的长度和遍历结果。当输入-1时,程序结束。

希望这个答复能够帮助到你,如果你还有其他的问题需要解答,可以继续向我提问。