User:Jam14718
Appearance
This article needs additional citations for verification. (January 2014) |
ลิงค์ลิสต์แบบสองทิศทาง (Doubly Linked List)
[edit]ได้เป็นโครงสร้างของข้อมูลไว้ใน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 เสมอ
ส่วนประกอบ
[edit]- ส่วนเก็บข้อมูล (data) ใช้เก็บข้อมูลข่าวสารที่มีโครงสร้างข้อมูลเบื้องต้นหรือเรียบง่าย
- ส่วนการเชื่อมต่อถัดไป (Next) เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างไปยังโหนดถัดไปในหน่วยความจำ
- ส่วนการเชื่อมต่อก่อนหน้า เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างกลับไปยังโหนดก่อนหน้าในหน่วยความจำ(Prev)
doubly linked lists
[edit]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
การเพิ่มnode
[edit]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
การลบnode
[edit]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.
การค้นหาnode
[edit]def search(self,data): node = self.head while (node and node.data != data): node = node.next return None return node.data
การแสดงผล
[edit]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