fbpx
วิกิพีเดีย

รายการโยง

รายการโยง (อังกฤษ: linked list) เป็นรายการประเภทหนึ่ง ซึ่งจะใช้ประเภทข้อมูลประเภทโครงสร้าง วัตถุ หรือตัวชี้ (Pointer) เพื่อชี้สมาชิกตัวถัดไปที่เก็บไปเรื่อยๆ

รายการโยง
ลักษณะรายการโยง
ความสำคัญของลำดับมีความสำคัญ
การซ้ำกันของสมาชิกอนุญาตให้ซ้ำได้
เวลาที่ใช้ค้นหาตามดัชนีO (n)
เวลาที่ใช้ค้นหาตามค่าO (1)
เวลาที่ใช้ในการเข้าถึงO (n)
การทำให้ว่างทำให้ปมหัวเป็น null
เวลาที่ใช้ทำให้ว่างO (1)
โครงสร้างต้นแบบรายการ
โครงสร้างที่นำไปใช้-
ความซับซ้อนในการคำนวณแบบสัญกรณ์โอใหญ่
ขั้นตอนวิธี ถัวเฉลี่ย เลวร้ายที่สุด

รายการโยงมีจุดเด่นทางด้านการเพิ่มหรือลดข้อมูลหรือชุดข้อมูลได้ง่าย จึงนำมาดัดแปลงในการสร้างโครงสร้างข้อมูลประเภทอื่นๆ เช่น กองซ้อน คิว ฯลฯ จึงนับว่าเป็นโครงสร้างข้อมูลที่ใช้บ่อยมากประเภทหนึ่ง

ลักษณะของรายการโยง

รายการโยงจะใช้ประเภทข้อมูลของโครงสร้าง วัตถุ หรือตัวชี้ซึ่งจะเก็บสมาชิก เรียกว่า ปม (node) ปมจะเก็บสมาชิกและตัวชี้ไปยังปมถัดไป ซึ่งทำให้เราสามารถรู้สมาชิกลำดับที่ติดกันได้ สำหรับปมสุดท้าย ตัวชี้จะไม่มีค่า หรือที่เรียกว่า null pointer

รายการโยงรูปแบบต่างๆ

  • รายการโยงชั้นเดียว (singly linked list) หมายถึง รายการโยงที่เก็บตัวชี้ไปยังปมถัดไปเท่านั้น จะไม่มีปมชี้ไปปมก่อนหน้า กล่าวคือ จะรู้ว่าสมาชิกถัดจากตัวเองมีค่าเท่าใด แต่ไม่รู้สมาชิกตัวที่อยู่ก่อนหน้า

 

  • รายการโยงมีปมหัว (linked list with header) หมายถึง รายการโยงที่มีปมหัว (header node) อันเป็นปมที่ไม่มีสมาชิก บางครั้งอาจเรียกว่า ปมตัวแทน หรือ ปมดัมมี (dummy node) ซึ่งทำให้การเพิ่มปมซับซ้อนน้อยลง ดูเพิ่มเติมได้ในหัวข้อ #การสร้างบริการของรายการโยง#การเพิ่มสมาชิก
  • รายการโยงสองชั้น (doubly linked list) เป็นรายการโยงที่เก็บตัวชี้ทั้งตัวก่อนหน้าและตัวถัดไป ทำให้สะดวกต่อการค้นหา แต่เพิ่มความซับซ้อนในการเพิ่มลดข้อมูลเล็กน้อย

 

  • รายการโยงวน (circularly linked list) เป็นรายการโยงที่ตัวสุดท้ายของรายการจะอ้อมไปชี้ตัวแรก (หรือปมหัว) เป็นตัวถัดไป ทำให้สะดวกในการวนรอบการทำงาน

 

บางครั้งเราอาจผสมผสานรูปแบบการทำงานให้เหมาะสม เช่น การสร้างรายการโยงสองชั้นวนที่มีปมหัว (circularly doubly linked list with header) ในการสร้างคิว เพราะรู้ทั้งสมาชิกตัวแรกสุดและตัวหลังสุด ซึ่งจะเป็นสมาชิกตัวก่อนหน้าและตัวถัดไปของปมหัว ทำให้รู้ตัวเข้าแรกสุดและตัวเข้าล่าสุดจากปมหัวเพียงปมเดียวได้

จุดเด่นของรายการโยง

จุดเด่นของรายการโยงคือการเพิ่มลดข้อมูลได้ง่าย โดยไม่ต้องเคลื่อนย้ายสมาชิกตัวถัดถัดไปเหมือนแถวลำดับ รายการโยงยังทำให้สะดวกต่อการผสาน (merge) รายการโยงเส้นสั้นๆให้เป็นเส้นยาวๆ โดยไม่ต้องจัดการกับทุกๆสมาชิก เพียงแต่จัดการกับปมแรกและปมสุดท้ายก็เพียงพอ

บริการที่มักจะมี

  • การเพิ่ม ลบข้อมูลของสมาชิกอย่างรวดเร็ว

ความเร็วที่ใช้ในการทำงาน

ด้วยลักษณะอันเป็นจุดเด่นของรายการโยง จึงทำให้การเพิ่ม ลบข้อมูลในรายการโยงจะรวดเร็วมาก เป็นO (1) แต่ต้องทราบบริเวณที่จะเพิ่มลบสมาชิกเสียก่อน จึงกลับเสียเวลาที่จะค้นหาสมาชิกที่ต้องการกับรายการโยงทั้งสาย ซึ่งต้องใช้เวลาถึง O (n) โดยเฉพาะการค้นหาแบบดัชนี จึงทำให้การทำงานเสียเวลาเป็น O (n) ไป

การทำงาน เวลา
การหาตามดัชนี O (n)
การเข้าถึงสมาชิก O (n)
การเพิ่ม ลบสมาชิกที่บริเวณที่ต้องการ O (1)

ประเภทข้อมูลที่ใช้สร้างรายการโยง

  • ประเภทข้อมูลประเภทโครงสร้าง วัตถุ หรือตัวชี้ เพื่อใช้เป็นปม (node) ซึ่งต้องเก็บสมาชิกและประเภทข้อมูลปมถัดไป (หรือปมก่อนหน้าหากต้องการทำเป็น รายการโยงสองชั้น)

การสร้างบริการของรายการโยง

การเพิ่มสมาชิก

เมื่อต้องการที่จะเพิ่มสมาชิกที่บริเวณใด สิ่งที่จะต้องทำคือการสร้างปมใหม่ที่เก็บสมาชิกใหม่ที่จะเพิ่มนั้น และกำหนดตัวชี้ของปมใหม่ให้ชี้ปมที่อยู่หลังบริเวณที่แทรกนั้น และกำหนดตัวชี้ของปมที่อยู่ก่อนหน้าบริเวณที่จะแทรกให้กลับมาชี้ปมใหม่ ปมใหม่ก็จะอยู่ตรงบริเวณที่ต้องการแทรกดังที่ต้องการ

วิธีนี้ใช้ได้กับการแทรก (insertion) รายการโยงเข้าไปในบริเวณใดๆ โดยการย้ายตัวชี้ของปมก่อนหน้าบริเวณนั้นมาชี้ที่ปมแรกของรายการโยงที่จะแทรก และย้ายตัวชี้ตัวสุดท้ายของรายการโยงที่จะแทรกไปชี้ปมถัดจากบริเวณที่จะแทรกแทน เท่านี้ก็จะเป็นการแทรกรายการโยงทั้งอัน โดยดำเนินการเฉพาะปมแรกและปมสุดท้ายของรายการโยงที่จะแทรกเท่านั้น

เนื่องจากการเพิ่มปมแรกนั้นไม่ได้เป็นการแทรกระหว่างกลาง (การเพิ่มปมสุดท้ายถือเป็นการแทรกระหว่างกลางได้เพราะเป็นการแทรกระหว่างปมสุดท้ายเดิมกับ null) จึงมีการลดความซับซ้อนโดยให้รายการโยงที่ว่างจะมีปมเริ่มหนึ่งปมเรียกว่า ปมหัว (header node) ซึ่งเป็นปมที่ไม่มีสมาชิก เป็นปมตัวแทน (dummy node) สมาชิกตัวแรกจะถูกเพิ่มหลังปมหัวนี้ กล่าวคือ สมาชิกตัวแรกสุดกลับเก็บไว้ที่ปมที่สองแทน ก็จะทำให้การเพิ่มสมาชิกตัวแรกเป็นการแทรกระหว่างปมหัวกับปมแรกเดิมได้

สำหรับวิธีการเพิ่มของรายการโยงสองชั้น (Doubly Linked List) นั้นเพิ่มจากการแทรกของรายการโยงชั้นเดียวเล็กน้อย เพียงแต่กำหนดตัวชี้ก่อนหน้าของปมหลังบริเวณที่แทรกมาชี้มาที่ปมหลังสุดที่แทรก ส่วนปมแรกสุดที่แทรกก็ชี้ไปที่ปมก่อนหน้าบริเวณที่แทรกนั้น

การลบสมาชิก

การลบสมาชิกเพียงแต่ทำการโยงข้าม (passed-linked) ปมหรือส่วนของรายการโยงที่จะลบ ตัวที่ไม่ถูกอ้างอิง (reference) จะถูกกำจัดด้วยระบบ garbage collection

การค้นหาสมาชิก

การค้นหาสมาชิกนั้นจำเป็นต้องใช้การไล่ทั้งรายการโยง โดยการใช้โปรแกรมวงวน (loop) ผ่านการใช้ตัวชี้ (Pointer) หรือตัวแวะผ่าน (Iterator) ในการพิจารณาทีละปม

บริการช่วยเหลือและบริการอื่นๆที่น่าสนใจ

  • การทำให้ว่าง ทำได้ง่ายโดยตัดการเชื่อมโยงหลังปมหัว (header)

ดูเพิ่ม

รายการโยง, งกฤษ, linked, list, เป, นรายการประเภทหน, งจะใช, ประเภทข, อม, ลประเภทโครงสร, าง, ตถ, หร, อต, วช, pointer, เพ, อช, สมาช, กต, วถ, ดไปท, เก, บไปเร, อยๆล, กษณะความสำค, ญของลำด, บม, ความสำค, ญการซ, ำก, นของสมาช, กอน, ญาตให, ำได, เวลาท, ใช, นหาตามด, ชน, เว. raykaroyng xngkvs linked list epnraykarpraephthhnung sungcaichpraephthkhxmulpraephthokhrngsrang wtthu hruxtwchi Pointer ephuxchismachiktwthdipthiekbiperuxyraykaroynglksnaraykaroyngkhwamsakhykhxngladbmikhwamsakhykarsaknkhxngsmachikxnuyatihsaidewlathiichkhnhatamdchniO n ewlathiichkhnhatamkhaO 1 ewlathiichinkarekhathungO n karthaihwangthaihpmhwepn nullewlathiichthaihwangO 1 okhrngsrangtnaebbraykarokhrngsrangthinaipich khwamsbsxninkarkhanwnaebbsykrnoxihykhntxnwithithwechliyelwraythisudraykaroyngmicudednthangdankarephimhruxldkhxmulhruxchudkhxmulidngay cungnamaddaeplnginkarsrangokhrngsrangkhxmulpraephthxun echn kxngsxn khiw l cungnbwaepnokhrngsrangkhxmulthiichbxymakpraephthhnung enuxha 1 lksnakhxngraykaroyng 2 raykaroyngrupaebbtang 3 cudednkhxngraykaroyng 4 brikarthimkcami 5 khwamerwthiichinkarthangan 6 praephthkhxmulthiichsrangraykaroyng 7 karsrangbrikarkhxngraykaroyng 7 1 karephimsmachik 7 2 karlbsmachik 7 3 karkhnhasmachik 7 4 brikarchwyehluxaelabrikarxunthinasnic 8 duephimlksnakhxngraykaroyng aekikhraykaroyngcaichpraephthkhxmulkhxngokhrngsrang wtthu hruxtwchisungcaekbsmachik eriykwa pm node pmcaekbsmachikaelatwchiipyngpmthdip sungthaiherasamarthrusmachikladbthitidknid sahrbpmsudthay twchicaimmikha hruxthieriykwa null pointerraykaroyngrupaebbtang aekikhraykaroyngchnediyw singly linked list hmaythung raykaroyngthiekbtwchiipyngpmthdipethann caimmipmchiippmkxnhna klawkhux caruwasmachikthdcaktwexngmikhaethaid aetimrusmachiktwthixyukxnhna raykaroyngmipmhw linked list with header hmaythung raykaroyngthimipmhw header node xnepnpmthiimmismachik bangkhrngxaceriykwa pmtwaethn hrux pmdmmi dummy node sungthaihkarephimpmsbsxnnxylng duephimetimidinhwkhx karsrangbrikarkhxngraykaroyng karephimsmachik raykaroyngsxngchn doubly linked list epnraykaroyngthiekbtwchithngtwkxnhnaaelatwthdip thaihsadwktxkarkhnha aetephimkhwamsbsxninkarephimldkhxmulelknxy raykaroyngwn circularly linked list epnraykaroyngthitwsudthaykhxngraykarcaxxmipchitwaerk hruxpmhw epntwthdip thaihsadwkinkarwnrxbkarthangan bangkhrngeraxacphsmphsanrupaebbkarthanganihehmaasm echn karsrangraykaroyngsxngchnwnthimipmhw circularly doubly linked list with header inkarsrangkhiw ephraaruthngsmachiktwaerksudaelatwhlngsud sungcaepnsmachiktwkxnhnaaelatwthdipkhxngpmhw thaihrutwekhaaerksudaelatwekhalasudcakpmhwephiyngpmediywidcudednkhxngraykaroyng aekikhcudednkhxngraykaroyngkhuxkarephimldkhxmulidngay odyimtxngekhluxnyaysmachiktwthdthdipehmuxnaethwladb raykaroyngyngthaihsadwktxkarphsan merge raykaroyngesnsnihepnesnyaw odyimtxngcdkarkbthuksmachik ephiyngaetcdkarkbpmaerkaelapmsudthaykephiyngphxbrikarthimkcami aekikhkarephim lbkhxmulkhxngsmachikxyangrwderwkhwamerwthiichinkarthangan aekikhdwylksnaxnepncudednkhxngraykaroyng cungthaihkarephim lbkhxmulinraykaroyngcarwderwmak epnO 1 aettxngthrabbriewnthicaephimlbsmachikesiykxn cungklbesiyewlathicakhnhasmachikthitxngkarkbraykaroyngthngsay sungtxngichewlathung O n odyechphaakarkhnhaaebbdchni cungthaihkarthanganesiyewlaepn O n ip karthangan ewlakarhatamdchni O n karekhathungsmachik O n karephim lbsmachikthibriewnthitxngkar O 1 praephthkhxmulthiichsrangraykaroyng aekikhpraephthkhxmulpraephthokhrngsrang wtthu hruxtwchi ephuxichepnpm node sungtxngekbsmachikaelapraephthkhxmulpmthdip hruxpmkxnhnahaktxngkarthaepn raykaroyngsxngchn karsrangbrikarkhxngraykaroyng aekikhkarephimsmachik aekikh emuxtxngkarthicaephimsmachikthibriewnid singthicatxngthakhuxkarsrangpmihmthiekbsmachikihmthicaephimnn aelakahndtwchikhxngpmihmihchipmthixyuhlngbriewnthiaethrknn aelakahndtwchikhxngpmthixyukxnhnabriewnthicaaethrkihklbmachipmihm pmihmkcaxyutrngbriewnthitxngkaraethrkdngthitxngkarwithiniichidkbkaraethrk insertion raykaroyngekhaipinbriewnid odykaryaytwchikhxngpmkxnhnabriewnnnmachithipmaerkkhxngraykaroyngthicaaethrk aelayaytwchitwsudthaykhxngraykaroyngthicaaethrkipchipmthdcakbriewnthicaaethrkaethn ethanikcaepnkaraethrkraykaroyngthngxn odydaeninkarechphaapmaerkaelapmsudthaykhxngraykaroyngthicaaethrkethannenuxngcakkarephimpmaerknnimidepnkaraethrkrahwangklang karephimpmsudthaythuxepnkaraethrkrahwangklangidephraaepnkaraethrkrahwangpmsudthayedimkb null cungmikarldkhwamsbsxnodyihraykaroyngthiwangcamipmerimhnungpmeriykwa pmhw header node sungepnpmthiimmismachik epnpmtwaethn dummy node smachiktwaerkcathukephimhlngpmhwni klawkhux smachiktwaerksudklbekbiwthipmthisxngaethn kcathaihkarephimsmachiktwaerkepnkaraethrkrahwangpmhwkbpmaerkedimidsahrbwithikarephimkhxngraykaroyngsxngchn Doubly Linked List nnephimcakkaraethrkkhxngraykaroyngchnediywelknxy ephiyngaetkahndtwchikxnhnakhxngpmhlngbriewnthiaethrkmachimathipmhlngsudthiaethrk swnpmaerksudthiaethrkkchiipthipmkxnhnabriewnthiaethrknn karlbsmachik aekikh karlbsmachikephiyngaetthakaroyngkham passed linked pmhruxswnkhxngraykaroyngthicalb twthiimthukxangxing reference cathukkacddwyrabb garbage collection karkhnhasmachik aekikh karkhnhasmachiknncaepntxngichkarilthngraykaroyng odykarichopraekrmwngwn loop phankarichtwchi Pointer hruxtwaewaphan Iterator inkarphicarnathilapm brikarchwyehluxaelabrikarxunthinasnic aekikh karthaihwang thaidngayodytdkarechuxmoynghlngpmhw header duephim aekikhraykaraethwladb raykar okhrngsrangkhxmul ekhathungcak https th wikipedia org w index php title raykaroyng amp oldid 7373954, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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