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时,程序结束。
希望这个答复能够帮助到你,如果你还有其他的问题需要解答,可以继续向我提问。