Python程序删除双向链表开头的新节点
什么是双向链表?
双向链表(doubly linked list)是一种链表的变体,每个节点不仅包含指向下一个节点的指针,还包含指向上一个节点的指针。通过这种方式,我们可以在双向链表中更加方便地向前或向后遍历。
以下是一个简单的Python实现双向链表的例子:
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
def insertToFront(self, data):
newNode = Node(data)
newNode.next = self.head
if self.head is not None:
self.head.prev = newNode
self.head = newNode
def printList(self):
node = self.head
while node is not None:
print(node.data, end=" ")
node = node.next
删除开头的新节点
在双向链表中,我们可以很容易地删除开头的节点。我们只需要将头指针指向下一个节点,然后将下一个节点的prev指针指向None。
以下是一个简单的Python程序来删除双向链表开头的新节点:
def deleteFirstNode(self):
if self.head is None:
return
else:
self.head = self.head.next
self.head.prev = None
示例
下面是一个简单的示例,说明如何使用上面定义的双向链表和删除开头新节点的方法:
dList = DoublyLinkedList()
dList.insertToFront(10)
dList.insertToFront(20)
dList.insertToFront(30)
dList.insertToFront(40)
# print original list
print("Original List : ")
dList.printList()
# Delete first node
dList.deleteFirstNode()
# Print updated list
print("\nList after deleting first node: ")
dList.printList()
完整代码
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
def insertToFront(self, data):
newNode = Node(data)
newNode.next = self.head
if self.head is not None:
self.head.prev = newNode
self.head = newNode
def deleteFirstNode(self):
if self.head is None:
return
else:
self.head = self.head.next
self.head.prev = None
def printList(self):
node = self.head
while node is not None:
print(node.data, end=" ")
node = node.next
# Example
dList = DoublyLinkedList()
dList.insertToFront(10)
dList.insertToFront(20)
dList.insertToFront(30)
dList.insertToFront(40)
# print original list
print("Original List : ")
dList.printList()
# Delete first node
dList.deleteFirstNode()
# Print updated list
print("\nList after deleting first node: ")
dList.printList()
结论
双向链表是一种强大的数据结构,可以用于许多不同的应用程序。删除双向链表的开头的新节点是一个相对简单的操作,只需要修改头指针并将新头节点的prev指向None即可。在Python中,可以使用类和方法来实现双向链表。