用类编写程序,实现单向链表结构。为每个输入的素数创建新节点,并按照从小到大的顺序插入到链表中的适当位置,当输入非素数时,停止创建新节点并将链表内的数据从首至尾遍历输出。请注意,输出内容严格单增,即输出的元素不能重复。 输入:任意 n 个整数,彼此间用空格分隔,整数范围[0,10000], n <=100. 输出: m 个素数,素数之间用空格分隔,行尾无空格,并且保持严格单增。
时间: 2023-06-03 17:06:01 浏览: 123
实现单向链表结构的代码如下:
```python
class Node:
def __init__(self, val):
self.val = val
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, val):
new_node = Node(val)
if not self.head:
self.head = new_node
elif val < self.head.val:
new_node.next = self.head
self.head = new_node
else:
curr = self.head
while curr.next and val > curr.next.val:
curr = curr.next
if curr.val != val:
new_node.next = curr.next
curr.next = new_node
def traverse(self):
res = []
curr = self.head
while curr:
res.append(curr.val)
curr = curr.next
return res
```
针对题目要求,我们可以在每次插入节点时判断是否为素数,如果是素数,则插入链表中,否则停止插入并遍历输出。具体代码如下:
```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
n = input().split()
linked_list = LinkedList()
for num in n:
if is_prime(int(num)):
linked_list.add_node(int(num))
else:
break
res = linked_list.traverse()
print(' '.join(str(x) for x in res))
```
注意输出结果不能重复,并且要保持严格单增。
阅读全文