Stacks เป็นโครงสร้างข้อมูลเชิงเส้นที่เป็นไปตามหลักการของ LIFO LIFO ย่อมาจาก Last in first out หมายความว่ารายการที่เพิ่มล่าสุดเป็นรายการแรกที่จะถูกลบออก โครงสร้างข้อมูลนี้มีชื่อว่า stack ที่คล้ายกับสแต็คในโลกแห่งความเป็นจริง เช่น กองคุกกี้ในโถคุกกี้ หรือกองหนังสือบนชั้นวางหนังสือ ในการแทรกและดึงสแต็กสามารถทำได้ที่ปลายด้านเดียวเท่านั้น กล่าวคือ ด้านบนของสแต็ก ตัวอย่างเช่น ถ้าเราอยากกินคุกกี้ เราก็จะได้อันบนก่อน แล้วค่อยมากินที่ 2 เป็นต้น
โพสต์นี้จะเกี่ยวกับการใช้งาน stack ใน JavaScript ขณะที่เรากำลังทำงานกับ JavaScript เราจะไม่กังวลเกี่ยวกับขนาดของสแต็ก เนื่องจากขนาดของออบเจกต์ JavaScript สามารถเติบโตแบบไดนามิกได้
การนำ Stack ไปใช้งานใน JavaScript
เราจะใช้คลาส JavaScript เพื่อใช้โครงสร้างข้อมูลสแต็ก ดิ ซ้อนกัน คลาสจะมีอาร์เรย์ในตัวสร้างซึ่งจะใช้ในการจัดเก็บองค์ประกอบในสแต็ก คลาสจะกำหนดวิธีการต่าง ๆ ซึ่งจะใช้เพื่อจัดการกับข้อมูลที่เก็บไว้ในสแต็ก วิธีการพื้นฐานที่สุดของอาร์เรย์คือ แทรก() และ สารสกัด() เมธอดที่ใช้ในการเพิ่มและลบองค์ประกอบออกจากด้านบนของสแต็ก
ดิ ซ้อนกัน คลาสยังกำหนดวิธีการอื่นเช่น แอบมอง() , มันว่างเปล่า() , แจ่มใส() , พิมพ์() และ ขนาด() เช่นกัน:
กองคลาส {
ตัวสร้าง ( ) {
this.elements = [ ] ;
}
// วางรายการบนกองซ้อน
แทรก ( ธาตุ ) {
this.elements.push ( ธาตุ ) ;
}
// นำรายการออกจากด้านบนของสแต็ก
สารสกัด ( ) {
this.elements.pop ( ) ;
}
// ส่งกลับองค์ประกอบบนสุดของ stack
แอบดู ( ) {
กลับ this.elements [ this.elements.length - 1 ] ;
}
// เช็ค ถ้า สแต็คว่างเปล่า
มันว่างเปล่า ( ) {
กลับ this.elements.length == 0 ;
}
// พิมพ์ทั้งกอง
พิมพ์ ( ) {
สำหรับ ( อนุญาต ผม = 0 ; ผม < this.elements.length; ฉัน++ ) {
console.log ( this.elements [ ผม ] ) ;
}
}
// ส่งกลับ ขนาด ของกอง
ขนาด ( ) {
กลับ this.elements.length;
}
// ล้างกอง
แจ่มใส ( ) {
this.elements = [ ] ;
}
}
ผลักและแตกองค์ประกอบจากสแต็ก
การดำเนินการขั้นพื้นฐานที่สุดของสแต็กคือการแทรกและแยกองค์ประกอบออกจากด้านบนของสแต็ก คลาสสแต็กจัดเตรียมสองวิธีสำหรับการดำเนินการเหล่านี้:
บรรทัดแรกของรหัสที่กล่าวถึงข้างต้นประกาศสแต็กใหม่ชื่อ ส . จากนั้น แทรก() เมธอดใช้เพื่อแทรกสี่องค์ประกอบลงในสแต็ก โดยสองในนั้นจะถูกลบออกโดย สารสกัด() กระบวนการ.
วิธีรับองค์ประกอบด้านบนจาก stack
ดิ ซ้อนกัน คลาสกำหนด แอบมอง() วิธีรับองค์ประกอบด้านบนจากสแต็ก:
วิธีตรวจสอบว่า stack ว่างหรือไม่?
คลาสยังกำหนดวิธีการที่สามารถใช้เพื่อตรวจสอบว่าสแต็กว่างเปล่าหรือไม่:
วิธีการพิมพ์ทั้งกอง?
ดิ พิมพ์() สามารถเรียกวิธีการพิมพ์ทั้ง stack
จะตรวจสอบขนาดของกองได้อย่างไร?
ดิ ขนาด() วิธีการใช้ .ความยาว คุณสมบัติเพื่อรับขนาดของสแต็ก:
จะล้างทั้งกองได้อย่างไร?
เพียงเรียกใช้ แจ่มใส() วิธีการลบทุกองค์ประกอบของสแต็ก:
บทสรุป
สแต็คเป็นโครงสร้างข้อมูลที่มีประโยชน์พร้อมแอปพลิเคชันจริงมากมาย เช่น ประวัติเบราว์เซอร์ ปุ่มเลิกทำในโปรแกรมแก้ไขข้อความ และบันทึกการโทร แอปพลิเคชันทั้งหมดเหล่านี้เป็นไปตามหลักการ LIFO เช่น ปุ่มย้อนกลับในเบราว์เซอร์จะนำกลับไปยังหน้าที่เข้าชมล่าสุด และรายการแรกของบันทึกการโทรจะเป็นการโทรล่าสุดเสมอ
การนำสแต็กไปใช้ใน JavaScript นั้นง่ายมากเพราะมี inbuilt ดัน และ โผล่ วิธีการสำหรับอาร์เรย์ บทความนี้แสดงขั้นตอนการใช้งานสแต็คใน JavaScript