fbpx
วิกิพีเดีย

ลิงค์ลิสต์แบบสองทิศทาง

ลิงค์ลิสต์แบบสองทิศทาง (Doubly Linked List)

ได้เป็นโครงสร้างของข้อมูลไว้ใน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 เสมอ

ส่วนประกอบ

  1. ส่วนเก็บข้อมูล (data) ใช้เก็บข้อมูลข่าวสารที่มีโครงสร้างข้อมูลเบื้องต้นหรือเรียบง่าย
  2. ส่วนการเชื่อมต่อถัดไป (Next) เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างไปยังโหนดถัดไปในหน่วยความจำ
  3. ส่วนการเชื่อมต่อก่อนหน้า เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างกลับไปยังโหนดก่อนหน้าในหน่วยความจำ(Prev)

doubly linked lists

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

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

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

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 

See also

งค, สต, แบบสองท, ศทาง, บทความน, ไม, การอ, างอ, งจากแหล, งท, มาใดกร, ณาช, วยปร, บปร, งบทความน, โดยเพ, มการอ, างอ, งแหล, งท, มาท, าเช, อถ, เน, อความท, ไม, แหล, งท, มาอาจถ, กค, ดค, านหร, อลบออก, january, 2014, เร, ยนร, าจะนำสารแม, แบบน, ออกได, อย, างไรและเม, อไร,. bthkhwamniimmikarxangxingcakaehlngthimaidkrunachwyprbprungbthkhwamni odyephimkarxangxingaehlngthimathinaechuxthux enuxkhwamthiimmiaehlngthimaxacthukkhdkhanhruxlbxxk January 2014 eriynruwacanasaraemaebbnixxkidxyangiraelaemuxir enuxha 1 lingkhlistaebbsxngthisthang Doubly Linked List 2 swnprakxb 3 doubly linked lists 3 1 karephimnode 3 2 karlbnode 3 3 karkhnhanode 3 4 karaesdngphl 4 See also lingkhlistaebbsxngthisthang Doubly Linked List aekikh idepnokhrngsrangkhxngkhxmuliwinnodeepnladb odyaetlanodecaprakxbipdwykhxmulaelapointer 2tw chiipyngnode thdipaelaxikhnungtwchiipyngnodethdipaelaxikhnungtwchiipyngnodekxnhna ykewnnodeaerkthiPointer sahrbchiipnode kxnhnacachiipthinullaelanode sudthaythipointer sahrbchiipnodethdipcachiipthinull thana node maeriyngtxkn epnladbcaiddoubly linked list khxngkhxmul n twodycakahndihmi pointer xyangnxy1twthichiipyngnodetwaerkkhxngdoubly linkedlist esmx swnprakxb aekikh swnekbkhxmul data ichekbkhxmulkhawsarthimiokhrngsrangkhxmulebuxngtnhruxeriybngay swnkarechuxmtxthdip Next epntwchihruxphxynetxrekbkhaaexdedrsichxangipyngohndthdipinhnwykhwamca swnkarechuxmtxkxnhna epntwchihruxphxynetxrekbkhaaexdedrsichxangklbipyngohndkxnhnainhnwykhwamca Prev doubly linked lists aekikh 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 karephimnode aekikh 2 1 karephimnode khanghna 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 karephimnode khanghlng 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 karlbnode aekikh 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 karkhnhanode aekikh def search self data node self head while node and node data data node node next return None return node data karaesdngphl aekikh 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 outputSee also aekikh 1 2 ekhathungcak https th wikipedia org w index php title lingkhlistaebbsxngthisthang amp oldid 7604079, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม