ได้เป็นโครงสร้างของข้อมูลไว้ในnodeเป็นลำดับ โดยแต่ละnodeจะประกอบไปด้วยข้อมูลและpointer 2ตัว ชี้ไปยังnode ถัดไปและอีกหนึ่งตัวชี้ไปยังnodeถัดไปและอีกหนึ่งตัวชี้ไปยังnodeก่อนหน้า ยกเว้นnodeแรกที่Pointer สำหรับชี้ไปnode ก่อนหน้าจะชี้ไปที่nullและnode สุดท้ายที่pointer สำหรับชี้ไปnodeถัดไปจะชี้ไปที่null ถ้านํา node มาเรียงต่อๆกัน เป็นลำดับจะได้doubly linked list ของข้อมูล n ตัวโดยจะกำหนดให้มี pointer อย่างน้อย1ตัวที่ชี้ไปยังnodeตัวแรกของdoubly linkedlist เสมอ
class Node:
# Constructor to create a new node def __init__(self, data): self.data = data self.next = None self.prev = None # Class to create a Doubly Linked List
class DoublyLinkedList:
# Constructor for empty Doubly Linked List def __init__(self): self.head = None
2.1 การเพิ่มnode ข้างหน้า
def push(self, new_data): new_node = Node(new_data) new_node.next = self.head if self.head is not None: self.head.prev = new_node self.head = new_node
2.1 การเพิ่มnode ข้างหลัง
def append(self, new_data): new_node = Node(new_data) new_node.next = None if self.head is None: new_node.prev = None self.head = new_node return last = self.head while(last.next is not None): last = last.next last.next = new_node new_node.prev = last return
def delete(self, valueToDelete): currentNode = self.head previousNode = None while currentNode is not None: if currentNode.data == valueToDelete: if previousNode is None: newHead = currentNode.next currentNode.next = None return newHead # Deleted the head previousNode.next= currentNode.next return self.head previousNode = currentNode currentNode = currentNode.next return self.head# Value to delete was not found.
def search(self,data): node = self.head while (node and node.data != data): node = node.next return None return node.data
def printList(self): output = '[' currentNode = self.head while currentNode is not None: output += str(currentNode.data) currentNode = currentNode.next if currentNode is not None: output += ', ' output += ']' return output