本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性
时间: 2023-04-29 21:02:27 浏览: 210
带头结点的动态单链表L插入节点使之仍有序
4星 · 用户满意度95%
实现一个函数,可以在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。
具体实现方法如下:
1. 首先判断链表是否为空,如果为空,则直接将新整数插入到头结点后面即可。
2. 如果链表不为空,则需要遍历链表,找到插入位置。
3. 遍历链表时,需要记录当前节点和前一个节点,以便在找到插入位置后进行插入操作。
4. 插入操作分为两种情况:插入到链表头部和插入到链表中间。
5. 插入到链表头部时,直接将新节点插入到头结点后面即可。
6. 插入到链表中间时,需要将前一个节点的next指针指向新节点,新节点的next指针指向当前节点。
7. 最后返回链表头结点即可。
代码实现如下:
```python
class ListNode:
def __init__(self, val=, next=None):
self.val = val
self.next = next
def insertNode(head: ListNode, val: int) -> ListNode:
# 如果链表为空,则直接将新节点插入到头结点后面
if not head:
head = ListNode()
head.next = ListNode(val)
return head
# 遍历链表,找到插入位置
cur = head.next
pre = head
while cur:
if cur.val > val:
break
pre = cur
cur = cur.next
# 插入操作
if pre == head:
# 插入到链表头部
node = ListNode(val)
node.next = head.next
head.next = node
else:
# 插入到链表中间
node = ListNode(val)
pre.next = node
node.next = cur
return head
```
使用示例:
```python
# 创建链表
head = ListNode()
node1 = ListNode(1)
node2 = ListNode(3)
node3 = ListNode(5)
head.next = node1
node1.next = node2
node2.next = node3
# 插入新节点
head = insertNode(head, 4)
# 遍历链表
cur = head.next
while cur:
print(cur.val)
cur = cur.next
```
输出结果:
```
1
3
4
5
```
阅读全文