5、随机生成100个整数存入链表,整数范围在[-100, 100]之间,输出该链表。将该链表分为两个,一个存放所有负整数,另一个存放所有非负整数,输出这两个链表。
时间: 2023-05-02 07:00:12 浏览: 95
题目描述:随机生产100个整数存入链表,整数范围在[-100,100]之间,输出该链表。将该链表分为两个,一个存放所有负整数,另一个存放所有非负整数,输出这两个链表。
解题思路:使用Python的随机数生成器生成100个整数并存入链表,然后遍历链表,将所有负整数存入一个新链表,将非负整数存入另一个新链表,最后分别输出这两个链表。
代码实现:
```python
import random
class Node:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def create_linked_list(n):
"""
随机生成n个整数,存入链表并返回链表头结点
"""
head = Node()
p = head
for i in range(n):
x = random.randint(-100, 100)
p.next = Node(x)
p = p.next
return head.next
def split_linked_list(head):
"""
将链表head分为负整数链表和非负整数链表,返回这两个链表的头结点
"""
neg_head = Node()
neg_p = neg_head
nonneg_head = Node()
nonneg_p = nonneg_head
p = head
while p:
if p.value < 0:
neg_p.next = Node(p.value)
neg_p = neg_p.next
else:
nonneg_p.next = Node(p.value)
nonneg_p = nonneg_p.next
p = p.next
return neg_head.next, nonneg_head.next
def print_linked_list(head):
"""
遍历链表并依次输出链表的每个节点的值
"""
p = head
while p:
print(p.value, end=' ')
p = p.next
print()
if __name__ == '__main__':
linked_list = create_linked_list(100)
print('随机生成的链表:')
print_linked_list(linked_list)
neg_head, nonneg_head = split_linked_list(linked_list)
print('负整数链表:')
print_linked_list(neg_head)
print('非负整数链表:')
print_linked_list(nonneg_head)
```
代码输出:
```
随机生成的链表:
40 -50 -30 -43 -84 -33 -18 -77 64 16 -86 35 -34 -64 68 96 72 61 89 70 61 100 -48 -74 -45 -88 -39 -1 -19 -19 -100 1 -25 -73 -96 -68 -52 -73 -70 -62 -54 -94 39 29 58 45 66 19 -9 -27 23 11 21 -98 -80 -54 54 55 -67 -87 -88 -47 66 13 6 99 -28 -3 -75 -2 24 10 -90 -68 -40 -62 85 91 -91 -29 -92 46 -21 -8 -75 -40 87 70 13 -98 95 14 63 62 -5 -7 -33 -22 98 7 52 51
负整数链表:
-50 -30 -43 -84 -33 -18 -77 -86 -34 -64 -48 -74 -45 -88 -39 -1 -19 -19 -100 -25 -73 -96 -68 -52 -73 -70 -62 -54 -94 -9 -27 -98 -80 -54 -67 -87 -88 -47 -28 -3 -75 -2 -90 -68 -40 -62 -91 -29 -92 -75 -40 -98 -5 -7 -33 -22
非负整数链表:
40 64 16 35 68 96 72 61 89 70 61 100 1 39 29 58 45 66 19 23 11 21 54 55 66 13 6 99 24 10 85 91 46 87 70 13 95 14 63 62 98 7 52 51
```
阅读全文