单链表的插入非法判断,一个是要插入位置小于1,另一个是要插入位置大于链表长度,比如链表shi1 2 3 4,但是现在要在6位置插入数据,这是不合法的。请编写一个单链表插入函数,包括两个非法判断
时间: 2024-10-10 19:08:44 浏览: 15
ListLink.rar_stl list_单链表_单链表 插入 删除 查找_链表 插入
在Python中,我们可以创建一个单链表节点类(ListNode),然后定义一个`insert_at`函数来进行插入操作,并包含对插入位置的合法性检查。这里是一个简单的实现:
```python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def insert_at(head, value, position):
# 判断插入位置是否有效
if position < 1 or (head and position > 1 and not head.next and position != 1): # 插入位置小于1 或 链表为空且插入位置大于1不是头节点
return "插入位置无效"
# 创建新的节点
new_node = ListNode(value)
# 如果链表为空或需要插入的是第一个节点
if not head or position == 1:
new_node.next = head
head = new_node
else:
current = head
for _ in range(position - 2): # 跳过前n-2个节点
current = current.next
new_node.next = current.next
current.next = new_node
return head
```
这个函数首先检查输入的`position`,如果它小于1或者链表为空并且插入位置大于1且不是作为链表的第一个元素,就返回错误信息。接下来,根据`position`的实际值,将新节点插入到链表的相应位置。
阅读全文