1.建立一个单链表,随机产生10个100以内的整数,并按要求完成: (1)在屏幕上显示单链表中的10个整数; (2)删把值为a的结点,若不存在a,则把a插入到表尾,显示更新后的单链表
时间: 2024-05-12 17:18:13 浏览: 44
好的,首先我会根据您的要求建立一个类 ChatGPT 的 AI,然后针对您的问题进行回答。对于您的第一个问题,请看以下代码:
```python
import random
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 随机产生一个整数链表,长度为length,元素大小范围为[0, range)
def generate_random_linked_list(length, range):
dummy = ListNode()
curr = dummy
for i in range(length):
val = random.randint(0, range - 1)
node = ListNode(val)
curr.next = node
curr = curr.next
return dummy.next
# 打印链表中所有元素
def print_linked_list(head):
curr = head
while curr:
print(curr.val, end=' ')
curr = curr.next
print()
# 删除链表中值为val的节点,若不存在则将val插入到表尾
def delete_or_append_to_tail(head, val):
dummy = ListNode(0)
dummy.next = head
prev = dummy
curr = head
while curr:
if curr.val == val:
prev.next = curr.next
break
else:
prev = curr
curr = curr.next
if not curr:
node = ListNode(val)
prev.next = node
return dummy.next
# 测试
lst = generate_random_linked_list(10, 100)
print('原始链表:')
print_linked_list(lst)
a = random.randint(0, 99)
print('将节点值为', a, '的节点删除或插入到表尾:')
lst = delete_or_append_to_tail(lst, a)
print_linked_list(lst)
```
以上代码中,我使用了Python语言,定义了一个单链表类 ListNode,包含元素值val和指向下一个节点的指针next;定义了一个函数generate_random_linked_list用于随机产生一个单链表,长度为length,元素值大小范围为0到range-1;定义了一个函数print_linked_list用于打印链表中所有元素;定义了一个函数delete_or_append_to_tail用于删除链表中值为val的节点,如果链表中不存在值为val的节点,则将值为val的节点插入到表尾端。
在测试函数中,我先使用 generate_random_linked_list 函数随机产生一个长度为10、值在[0, 99]之间的单链表,然后取一个随机整数a,调用 delete_or_append_to_tail 函数删除或插入值为a的节点,并打印更新后的链表。
希望以上代码能对您有所帮助。
阅读全文