เราจำเป็นต้องสร้างฟังก์ชัน insert(data, position) ที่แทรกข้อมูลที่ตำแหน่งที่กำหนดในรายการที่เชื่อมโยง เราจะดำเนินการตามขั้นตอนต่อไปนี้ -
- สร้างโหนดใหม่
- ตรวจสอบว่ารายการว่างเปล่าหรือไม่ ถ้ามันเพิ่มโหนดไปที่ส่วนหัวแล้วกลับ
- ถ้าไม่ใช่ เราจะวนซ้ำไปยังตำแหน่งที่เราต้องการแทรกโดยใช้ currElem เราทำซ้ำรายการที่เชื่อมโยงโดยทำให้ currElem เท่ากับ currElem.next
- จากนั้นเราจะให้โหนดชี้ไปที่โหนดถัดไปในรายการ นี่คือการติดตามส่วนที่เหลือของรายการ
- สุดท้าย เราแยกลิงก์จาก currElem ไปยังส่วนที่เหลือของรายการ และทำให้ชี้ไปที่โหนดที่เราสร้างขึ้น ตอนนี้โหนดอยู่ในรายการที่ตำแหน่งที่กำหนด
นี่คือภาพประกอบของสิ่งเดียวกัน -
ตอนนี้เรามาดูกันว่าเราจะใช้งานสิ่งนี้อย่างไร -
ตัวอย่าง
insert(data, position = this.length) { let node = new this.Node(data); if (this.head === null) { this.head = node; this.length++; return this.head; } let iter = 1; let currNode = this.head; while (currNode.next != null && iter < position) { currNode = currNode.next; iter++; } node.next = currNode.next; currNode.next = node; this.length++; return node; }
โปรดทราบว่าเราได้กำหนดตำแหน่งเป็นองค์ประกอบสุดท้าย เนื่องจากถ้าคุณไม่ระบุตำแหน่ง ตำแหน่งนั้นจะถูกแทรกที่ส่วนท้ายตามค่าเริ่มต้น
คุณสามารถทดสอบได้โดยใช้ −
ตัวอย่าง
let list = new LinkedList(); list.insert(10); list.insert(20); list.insert(30); list.insert(15, 2); list.display();
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
10 -> 30 -> 15 -> 20 ->
อย่างที่เราเห็นองค์ประกอบทั้งหมดอยู่ในลำดับที่เราตั้งใจไว้ เราลองใส่ 15 ที่ตำแหน่งหลัง 2