: (สแต็ก) หรือที่เรียกว่าสแต็ก เป็นตารางเชิงเส้นที่มีการดำเนินการจำกัด ปฏิบัติตามรายการเข้าก่อนออกก่อน (LIFO)
ของสแต็ก : รายการเชิงเส้นที่จำกัดการดำเนินการแทรกและการลบเฉพาะที่ส่วนท้ายของตาราง และ
ด้านล่างของสแต็ก : รายการเชิงเส้นที่จำกัดการดำเนินการแทรกและการลบ ไปที่ศีรษะเท่านั้น
การผลักดัน : การแทรกองค์ประกอบใหม่ลงในสแต็กเรียกอีกอย่างว่าการผลักดัน การผลักดัน หรือการผลักดันมัน
คือ การวางองค์ประกอบใหม่ไว้บนองค์ประกอบด้านบนของสแต็ก ทำให้เป็นองค์ประกอบบนสุดใหม่ของสแต็ก
องค์ประกอบสแต็กเรียกอีกอย่างว่าการแตกหรือแตกออกจากสแต็ก มันจะลบองค์ประกอบด้านบนของสแต็กและทำให้องค์ประกอบที่อยู่ติดกันกลายเป็นองค์ประกอบบนสุดใหม่ของสแต็ก
สิ่งที่มุ่งเน้นกระบวนการ:
มุ่งเน้นกระบวนการคือ การวิเคราะห์ขั้นตอน ในการแก้ปัญหา
จากนั้นใช้ฟังก์ชัน
เพื่อนำไปใช้งาน คุณเพียงแค่ต้อง ดำเนินการและเรียก ขั้นตอนเหล่านั้นทีละขั้นตอน
- กด (องค์ประกอบ ) เพิ่มองค์ประกอบตั้งแต่หนึ่งรายการขึ้นไปที่ด้านบนของสแต็ก
- ป๊อป () ลบองค์ประกอบด้านบนและส่งกลับองค์ประกอบที่ถูกลบออก
- ดูออก () ส่งคืนองค์ประกอบที่ด้านบนของสแต็ก
- isEmpty () คือ ใช้เพื่อตรวจสอบว่าสแต็กว่างเปล่าหรือไม่
- clear() ใช้เพื่อล้างองค์ประกอบของสแต็ก
- size() ใช้เพื่อส่งคืนจำนวนองค์ประกอบในสแต็ก
ก่อนที่จะนำไปใช้ลองคิดดู วิธีที่เรานำไปใช้
ขั้นแรก เรายืมวิธีการอาร์เรย์เพื่อนำไปใช้ ดังนั้นเราจึงจำเป็นต้องสร้าง
อาร์เรย์ว่างเพื่อจำลองสแต็ก
เพื่อสร้างคลาส ใช้อาร์เรย์เพื่อจำลอง และ
เขียนวิธีการต่าง ๆ ในคลาส
เพื่อเรียกวิธีการอาร์เรย์บางส่วน
โดยทั่วไป วิธีการใช้คลาสเพื่อรวม
อาร์เรย์คือการจำลอง
คลาสสแต็ก Stack { ตัวสร้าง () { นี่.รายการ = [] - ผลักดัน (องค์ประกอบ) { this.item.push (องค์ประกอบ) - โผล่() { กลับ this.item.pop() - แอบมอง() { กลับ this.item[this.item.length - 1] - isEmpty() { ส่งคืน this.item.length === 0 - ชัดเจน() { นี่.รายการ = [] ขนาด() { ส่งคืน this.item.length - - // สร้างอินสแตนซ์คลาส Stack const stack = new Stack() สแต็ค.ดัน(4) สแต็ค.ดัน(6) console.log( สแต็ค.ป๊อป()) console.log(stack.peek()) console.log(สแต็ค.isEmpty())ผลลัพธ์
Console.log(stack.size())
:
เชิงวัตถุ:
เป็นการ แยกแยะสิ่งต่าง ๆ ที่สร้างปัญหาออกเป็นหลาย ๆ วัตถุ
วัตถุไม่ได้ถูกสร้างขึ้นเพื่อดำเนินการขั้นตอนใดขั้นตอนหนึ่ง แต่เพื่อ
อธิบาย พฤติกรรม ของบางสิ่งในกระบวนการแก้ไขปัญหา
- กด (องค์ประกอบ ) เพิ่มองค์ประกอบตั้งแต่หนึ่งรายการขึ้นไปที่ด้านบนของสแต็ก
- ป๊อป () ลบองค์ประกอบด้านบนและส่งกลับองค์ประกอบที่ถูกลบออก
- ดูออก () ส่งคืนองค์ประกอบที่ด้านบนของสแต็ก
- isEmpty () คือ ใช้เพื่อตรวจสอบว่าสแต็กว่างหรือไม่ ว่างคือว่างเปล่า
- clear() ใช้เพื่อล้างองค์ประกอบของ
- ขนาดสแต็ก() ใช้เพื่อส่งคืนจำนวนองค์ประกอบในสแต็ก
- toString() ใช้เพื่อพิมพ์สแต็กในรูปแบบ ของ string
จากนั้นเมื่อนำคลาสนี้ไปใช้ เราจะใช้ object กับ Simulation stack
คลาส Stack { ตัวสร้าง () { นี้.นับ=0 นี่.รายการ = {} - ผลักดัน (องค์ประกอบ) { this.items[this.count]=องค์ประกอบ นี้.นับ++ - โผล่() { ถ้า(this.isEmpty()){ กลับไม่ได้กำหนด - นี้.นับ-- ผล const=this.items[this.count] ลบ this.items[this.count] ส่งคืนผลลัพธ์ - แอบมอง() { ถ้า(this.isEmpty()){ กลับไม่ได้กำหนด - กลับ this.items[this.count-1] - isEmpty() { ส่งคืน this.count===0 - ชัดเจน() { นี้.รายการ={} นี้.นับ=0 - ขนาด() { ส่งคืน this.count - toString(){ ถ้า(this.isEmpty()){ กลับไม่ได้กำหนด - ให้ objectString=`${this.items[0]}` สำหรับ(ให้ i=1;i<this.count;i++){ objectString=`${objectString},${this.items[i]}` - กลับ objectString - - const stack = สแต็คใหม่ () สแต็ค.ดัน(23) สแต็ค.ดัน(34) สแต็ค.ดัน(80) console.log( สแต็ค.ป๊อป()) console.log(stack.peek()) console.log(สแต็ค.isEmpty()) console.log (สแต็กขนาด ())เมื่อ
console.log(stack.toString())
ใช้อ็อบเจ็กต์เพื่อจำลองสแต็ก จะใช้คีย์:ค่า
เพื่อจัดเก็บข้อมูล ตัวอย่างเช่น this.items[this.count]=element ใช้
this.count เพื่อบันทึกในโครงสร้างนี้ ขนาดของสแต็ก
เมื่อเราใส่ตัวเลขลงไป เราจะกำหนด count เป็นคีย์
และใส่ค่าเป็นค่า ในเวลานี้ คุณต้องเปลี่ยน this.count++
เกี่ยวกับ pop() และ peek() เมธอด toString() จะต้อง
พิจารณาว่าสแต็กว่างเปล่าหรือไม่ ก็จะส่งคืน undefinition