在Python中的链表中插入新元素到指定位置之前的程序
假设我们有一个包含元素的列表;这些元素存储在一个单链表中。我们还有一个值pos和值val。我们必须在链表的索引pos之前插入val。
所以,如果输入是nums = [1,5,3,6,8],pos = 3,val = 7,那么输出将是[1, 5, 3, 7, 6, 8]
为了解决这个问题,我们将采取以下步骤 –
- new:用与val相同的值创建一个链表节点
-
如果pos等于0,则
- new.next:= list_head
-
返回新的节点
-
temp:= list_head
-
当temp不为空且pos不等于1时执行以下操作
- temp:= temp.next
-
pos:=pos-1
-
new.next := temp.next
-
temp.next:= new
-
返回list_head
示例
让我们看看以下实现以获得更好的理解
class ListNode:
def __init__(self, data, next = None):
self.val = data
self.next = next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
return head
def print_list(head):
ptr = head
print('[', end = "")
while ptr:
print(ptr.val, end = ", ")
ptr = ptr.next
print(']')
def solve(list_head, pos, val):
new = ListNode(val)
if pos == 0:
new.next = list_head
return new
temp = list_head
while temp and pos != 1:
temp = temp.next
pos -= 1
next = temp.next
temp.next = new
return list_head
nums = [1,5,3,6,8]
pos = 3
val = 7
list_head = make_list(nums)
list_head = solve(list_head, pos, val)
print_list(list_head)
输入
[1,5,3,6,8], 3, 7
输出
[1, 5, 3, 7, 6, 8, ]