用于在给定位置删除链表节点的Python程序
给定一个单链表和一个位置,删除给定位置的链表节点。
例子:
Input: position = 1, Linked List = 8->2->3->1->7
Output: Linked List = 8->3->1->7
Input: position = 0, Linked List = 8->2->3->1->7
Output: Linked List = 2->3->1->7
如果要删除的节点是根节点,直接删除即可。要删除中间节点,我们必须有一个指向要删除的节点之前的节点的指针。因此,如果位置不为零,我们运行一个循环位置 1 次并获得指向前一个节点的指针。
下面是上述思想的实现。
Python
# Python program to delete a node in a linked list
# at a given position
# Node class
class Node:
# Constructor to initialize the node object
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
# Constructor to initialize head
def __init__(self):
self.head = None
# Function to insert a new node at the beginning
def push(self, new_data):
new_node = Node(new_data)
new_node.next = self.head
self.head = new_node
# Given a reference to the head of a list
# and a position, delete the node at a given position
def deleteNode(self, position):
# If linked list is empty
if self.head == None:
return
# Store head node
temp = self.head
# If head needs to be removed
if position == 0:
self.head = temp.next
temp = None
return
# Find previous node of the node to be deleted
for i in range(position -1 ):
temp = temp.next
if temp is None:
break
# If position is more than number of nodes
if temp is None:
return
if temp.next is None:
return
# Node temp.next is the node to be deleted
# store pointer to the next of node to be deleted
next = temp.next.next
# Unlink the node from linked list
temp.next = None
temp.next = next
# Utility function to print the linked LinkedList
def printList(self):
temp = self.head
while(temp):
print " %d " %(temp.data),
temp = temp.next
# Driver program to test above function
llist = LinkedList()
llist.push(7)
llist.push(1)
llist.push(3)
llist.push(2)
llist.push(8)
print "Created Linked List: "
llist.printList()
llist.deleteNode(4)
print "
Linked List after Deletion at position 4: "
llist.printList()
# This code is contributed by Nikhil Kumar Singh(nickzuck_007)
输出:
Created Linked List:
8 2 3 1 7
Linked List after Deletion at position 4:
8 2 3 1
有关详细信息,请参阅有关在给定位置删除链接列表节点的完整文章!