หน้าแรก
หน้าแรก
มาสร้างคลาส MyMap กันเถอะ เพื่อไม่ให้มันซ่อนคลาส Map จริงใน JS เราจะสร้างวัตถุคอนเทนเนอร์ที่จะติดตามค่าทั้งหมดของเราที่เราเพิ่มลงในแผนที่ เราจะสร้างฟังก์ชันการแสดงผลที่พิมพ์แผนที่ให้เราด้วย ตัวอย่าง class MyMap { constructor() { this.container = {}; }
ตอนนี้ เราจะสร้างวิธีการใส่ที่ช่วยให้เราสามารถใส่คู่คีย์-ค่าลงในพจนานุกรมได้ ตอนนี้เราจะใช้วิธีการวาง โปรดทราบว่า JS มีวัตถุที่ทำหน้าที่เหมือนพจนานุกรม เราสามารถตั้งค่าคุณสมบัติคีย์ของคอนเทนเนอร์เป็นค่าได้ ตัวอย่าง put(key, value) { this.container[key] = value; } คุณสามารถทดสอบฟังก์ช
หากต้องการลบองค์ประกอบออกจากพจนานุกรม เราต้องตรวจสอบก่อนว่ามีองค์ประกอบนั้นอยู่ในพจนานุกรมหรือไม่ เราจะใช้วิธี hasKey สำหรับสิ่งนั้น จากนั้นเราสามารถลบได้โดยตรงโดยใช้ตัวดำเนินการลบ เราจะคืนค่าบูลีนเพื่อให้สถานที่ที่เราเรียกใช้เมธอดนี้สามารถทราบได้ว่าคีย์มีอยู่แล้วหรือไม่อยู่ในพจนานุกรม ตัวอย่าง d
เราจะใช้วิธี get เพื่อค้นหาคีย์ที่ระบุในพจนานุกรม ตัวอย่าง get(key) { if(this.hasKey(key)) { return this.container[key]; } return undefined; } อีกครั้ง วัตถุ JS ถูกนำไปใช้อย่างมากเช่นพจนานุกรม ดังนั้นจึงมีฟังก์ชันส่วนใหญ่ที่เราสามารถใช้ได
การลบองค์ประกอบนั้นง่ายมากในรายการที่เชื่อมโยง เราแค่ต้องกำจัดโหนดที่เราต้องการลบ นั่นคือ สูญเสียข้อมูลอ้างอิง มี 3 กรณีที่เราต้องพิจารณา - การลบองค์ประกอบออกจากส่วนหัว:ในกรณีนี้ เราสามารถกำหนด head =head.next และลบลิงก์ก่อนหน้าออกจากองค์ประกอบถัดไปได้ วิธีนี้จะทำให้สูญเสียการอ้างอิงขององค์ประกอบแร
นี่คือการใช้งานที่สมบูรณ์ของคลาส DoublyLinkedList - ตัวอย่าง class DoublyLinkedList { constructor() { this.head = null; this.tail = null; this.length = 0; } insert(data, position = this.length) { &n
รายการที่เชื่อมโยงแบบวงกลมเป็นรูปแบบหนึ่งของรายการที่เชื่อมโยง โดยองค์ประกอบแรกชี้ไปที่องค์ประกอบสุดท้าย และองค์ประกอบสุดท้ายชี้ไปที่องค์ประกอบแรก ทั้งรายการที่เชื่อมโยงแบบเดี่ยวและรายการที่เชื่อมโยงแบบทวีคูณสามารถทำเป็นรายการที่เชื่อมโยงแบบวงกลมได้
ในรายการที่เชื่อมโยงโดยลำพัง ตัวชี้ถัดไปของโหนดสุดท้ายจะชี้ไปที่โหนดแรก
ในรายการเชื่อมโยงแบบทวีคูณ ตัวชี้ถัดไปของโหนดสุดท้ายชี้ไปที่โหนดแรก และตัวชี้ก่อนหน้าของโหนดแรกจะชี้ไปที่โหนดสุดท้ายที่ทำให้เป็นวงกลมทั้งสองทิศทาง การแทรกและการลบในรายการเชื่อมโยงแบบวงกลมจะเหมือนกับรายการที่เชื่อมโยงอื่นๆ คุณเพียงแค่ต้องติดตามลิงก์สุดท้ายในขณะที่ดำเนินการที่ปลายด้านใดด้านหนึ่งของ
ชุดเป็นประเภทข้อมูลนามธรรมที่สามารถเก็บค่าบางอย่างได้ โดยไม่มีลำดับเฉพาะใดๆ และไม่มีค่าที่ซ้ำกัน เป็นการนำแนวคิดทางคณิตศาสตร์ของเซตจำกัดไปใช้ด้วยคอมพิวเตอร์ ไม่เหมือนกับคอลเล็กชันประเภทอื่นๆ ส่วนใหญ่ แทนที่จะดึงองค์ประกอบเฉพาะจากชุด ปกติการทดสอบค่าสำหรับการเป็นสมาชิกในชุด
เมื่อใดก็ตามที่คุณต้องการเก็บองค์ประกอบที่ไม่ซ้ำในคอนเทนเนอร์ที่ลำดับไม่สำคัญ และคุณต้องการใช้เพื่อตรวจสอบความเป็นสมาชิกของวัตถุต่างๆ เป็นหลัก เซตยังมีประโยชน์เมื่อคุณต้องการดำเนินการต่างๆ เช่น การรวม ทางแยก ความแตกต่าง เช่นเดียวกับที่คุณทำในเซตทางคณิตศาสตร์ มาดูทั้งสองวิธีที่เราสามารถกำหนดชุดของเ
มาสร้างคลาส MySet กันเถอะ เพื่อไม่ให้มันซ่อนคลาสเซ็ตจริงใน JS เราจะสร้างคอนเทนเนอร์ออบเจ็กต์ที่จะติดตามค่าทั้งหมดของเราที่เราเพิ่มเข้าไปในชุด เราจะสร้างฟังก์ชันการแสดงผลที่พิมพ์ชุดให้เราด้วย ตัวอย่าง class MySet { constructor() { this.container = {}; }
วิธีการเพิ่มจะตรวจสอบว่ามีค่ามีอยู่แล้วในชุดหรือไม่ ถ้าไม่ใช่ ก็จะเพิ่มค่านั้นให้กับชุด เราสามารถดำเนินการได้ดังนี้ - ตัวอย่าง add(val) { if (!this.has(val)) { this.container[val] = val; return true; } return false; } คุณสามารถทดสอบสิ่งนี
วิธีการลบจะตรวจสอบว่ามีค่ามีอยู่แล้วในชุดหรือไม่ ถ้าเป็นเช่นนั้น มันจะลบค่านั้นออกจากชุด เราสามารถนำไปปฏิบัติได้ดังนี้ &ลบ ตัวอย่าง delete(val) { if (this.has(val)) { delete this.container[val]; return true; } return f
ตามภาพประกอบด้านบน ต่อไปนี้คือประเด็นสำคัญที่ต้องพิจารณา LinkedList มีองค์ประกอบลิงก์ที่เรียกก่อน แต่ละลิงก์จะมีช่องข้อมูลและช่องลิงก์ที่เรียกถัดไป แต่ละลิงก์เชื่อมโยงกับลิงก์ถัดไปโดยใช้ลิงก์ถัดไป ลิงก์สุดท้ายมีลิงก์เป็นค่าว่างเพื่อทำเครื่องหมายจุดสิ้นสุดของรายการ
ต่อไปนี้คือรสชาติต่างๆ ของรายการที่เชื่อมโยง รายการเชื่อมโยงอย่างง่าย − รายการนำทางไปข้างหน้าเท่านั้น รายการที่เชื่อมโยงเป็นทวีคูณ − รายการสามารถนำทางไปข้างหน้าและย้อนกลับได้ รายการเชื่อมโยงแบบวงกลม − รายการสุดท้ายมีลิงก์ขององค์ประกอบแรกเป็นรายการถัดไป และองค์ประกอบแรกมีลิงก์ไปยังองค์ประกอบสุดท้
ต่อไปนี้คือการดำเนินการพื้นฐานที่รายการสนับสนุน การแทรก − เพิ่มองค์ประกอบที่จุดเริ่มต้นของรายการ การลบ - ลบองค์ประกอบที่จุดเริ่มต้นของรายการ การแสดงผล − แสดงรายการทั้งหมด ค้นหา − ค้นหาองค์ประกอบโดยใช้คีย์ที่กำหนด ลบ - ลบองค์ประกอบโดยใช้คีย์ที่กำหนด
เริ่มต้นด้วยการกำหนดคลาสอย่างง่ายด้วยคอนสตรัคเตอร์ที่เริ่มต้นส่วนหัวเป็น null นอกจากนี้เรายังจะกำหนดโครงสร้างอื่นบนต้นแบบของคลาส LinkedList ที่จะเป็นตัวแทนของแต่ละโหนดในรายการที่เชื่อมโยง ตัวอย่าง class LinkedList { constructor() { this.head = null; &n
เราจำเป็นต้องสร้างฟังก์ชัน insert(data, position) ที่แทรกข้อมูลที่ตำแหน่งที่กำหนดในรายการที่เชื่อมโยง เราจะดำเนินการตามขั้นตอนต่อไปนี้ - สร้างโหนดใหม่ ตรวจสอบว่ารายการว่างเปล่าหรือไม่ ถ้ามันเพิ่มโหนดไปที่ส่วนหัวแล้วกลับ ถ้าไม่ใช่ เราจะวนซ้ำไปยังตำแหน่งที่เราต้องการแทรกโดยใช้ currElem เราทำซ้ำรายการ
การลบองค์ประกอบนั้นง่ายมากในรายการที่เชื่อมโยง เราแค่ต้องกำจัดโหนดที่เราต้องการลบ นั่นคือ สูญเสียข้อมูลอ้างอิง มี 3 กรณีที่เราต้องพิจารณา - การลบองค์ประกอบออกจากส่วนหัว:ในกรณีนี้ เราสามารถกำหนด head =head.next ได้ง่ายๆ วิธีนี้จะทำให้สูญเสียการอ้างอิงขององค์ประกอบแรก และออกหัวจะเริ่มชี้ไปที่องค์ประก