การใช้รายการที่เชื่อมโยงใน JavaScript
รายการที่เชื่อมโยงเป็นโครงสร้างข้อมูลที่คล้ายกับอาร์เรย์ ยกเว้นข้อเท็จจริงที่ว่าข้อมูลไม่ได้ถูกจัดเก็บไว้ในตำแหน่งหน่วยความจำเดียว ใน JavaScript แต่ละองค์ประกอบ (โหนด) ของรายการที่เชื่อมโยงคือวัตถุที่ชี้ไปยังองค์ประกอบถัดไป (โหนด) ซึ่งจะชี้ไปยังองค์ประกอบถัดไปของรายการที่เชื่อมโยง จนกว่าองค์ประกอบสุดท้ายจะชี้ไปที่ความว่างเปล่า (จุดสิ้นสุดของรายการที่เชื่อมโยง) .
จุดเข้าสู่รายการที่เชื่อมโยงเรียกว่าส่วนหัว ส่วนหัวคือการอ้างอิงถึงโหนดแรกในรายการที่เชื่อมโยง โหนดสุดท้ายในรายการชี้ไปที่โมฆะ หากรายการว่างเปล่า ส่วนหัวจะเป็นการอ้างอิงที่เป็นค่าว่าง
ตามภาพ รายการลิงค์ที่ดูดีที่สุดมีดังนี้
นอกจากนี้ยังสามารถดูเป็น;
// Skeletal View of a Linked List
const list = {
head: {
data: 12,
next: {
data: 99,
next: {
data: 37,
next: null
}
}
}
}
// Joshua Ajagbe
- เครื่องเล่นเพลง — เพลงในเครื่องเล่นเพลงเชื่อมโยงกับเพลงก่อนหน้าและเพลงถัดไป คุณจึงสามารถเล่นเพลงจากจุดเริ่มต้นหรือจุดสิ้นสุดของรายการ
- โปรแกรมดูรูปภาพ — รูปภาพก่อนหน้าและถัดไปจะถูกเชื่อมโยงและสามารถเข้าถึงได้โดยปุ่มถัดไปและก่อนหน้า
- หน้าก่อนหน้าและหน้าถัดไปในเว็บเบราว์เซอร์ — เราสามารถเข้าถึง URL ก่อนหน้าและถัดไปที่ค้นหาในเว็บเบราว์เซอร์ได้โดยการกดปุ่มย้อนกลับและถัดไปเนื่องจากลิงก์เหล่านั้นเป็นรายการลิงก์
รายการที่เชื่อมโยงมีสามประเภทใหญ่ๆ ได้แก่ รายการที่เชื่อมโยงแบบเดี่ยว รายการที่เชื่อมโยงแบบทวีคูณ และรายการที่เชื่อมโยงแบบวงกลม สำหรับจุดประสงค์ของการเรียนรู้นี้ เราจะใช้ Singly Linked List
ตามที่ระบุไว้ก่อนหน้านี้ รายการที่เชื่อมโยงเป็นเพียงการรวมกันขององค์ประกอบ (โหนด) ที่ชี้ถึงกันและกัน หน่วยพื้นฐานของรายการเชื่อมโยงคือโหนด โหนดเก็บข้อมูลและตัวชี้ไปยังโหนดถัดไป ดำเนินการดังนี้
// A Singly Linked List Node
function SinglyLinkedListNode(data) {
this.data = data;
this.next = null; // the pointer to the next node...
}
// Joshua Ajagbe
function SinglyLinkedList() {
this.head = null;
this.size = 0; // this helps keep track of the size of the linked list.
}
SinglyLinkedList.prototype.insert = function (data) {
// checking if linked list is empty
if(this.head === null){
this.head = new SinglyLinkedListNode(data);
} else {
let temp = this.head;
this.head = new SinglyLinkedListNode(data);
this.head.next = temp;
}
this.size++; // updating the linked list size.
}
// Let's add method to check if the linked list is empty here. Bonus
SinglyLinkedList.prototype.isEmpty = function () {
return this.size === 0;
}
// Joshua Ajagbe
การลบโหนดออกจากรายการที่เชื่อมโยงจะดำเนินการโดยการเอาตัวชี้ออก ซึ่งหมายความว่าโหนดก่อนหน้าที่ชี้ไปยังโหนด (ที่จะถูกลบ) จะถูกทำให้ข้ามโหนด (ที่จะถูกลบ) ดังนั้นจึงชี้ไปที่โหนดถัดไป
SinglyLinkedList.prototype.remove = function (data) {
let currentHead = this.head;
if(currentHead.data === data) {
this.head = currentHead.next;
this.size--;
} else {
let prev = currentHead;
while(currentHead.next) {
if(currentHead.data === data){
prev.next = currentHead.next;
prev = currentHead;
currentHead = currentHead.next
this.size--;
break;
}
prev = currentHead;
currentHead = currentHead.next;
}
}
}
// Joshua Ajagbe
ฉันหวังว่าสิ่งนี้จะช่วยให้คุณเข้าใจรายการที่เชื่อมโยงและการใช้งาน
ในกรณีที่คุณต้องการคำอธิบายเพิ่มเติม คุณสามารถติดต่อฉันได้ที่ LinkedIn:https://www.linkedin.com/in/joshua-ajagbe/หรือส่งอีเมลฉันที่[email protected]
มีความสุขในการเรียนรู้





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)