การนำ Stack ไปใช้ใน JavaScript

มันเหมือนกับอาร์เรย์ที่มีโครงสร้างและกฎมากกว่า

ภาพโดย Brooke Lark จาก Unsplash

สแต็คคือโครงสร้างข้อมูลที่เป็นไปตามหลักการ Last-In-First-Out (LIFO) ซึ่งหมายความว่ารายการสุดท้ายที่แทรกลงในสแต็กเป็นรายการแรกที่จะถูกลบ

กล่าวอีกนัยหนึ่ง สแต็กคือรายการองค์ประกอบที่สามารถเข้าถึงได้จากปลายด้านหนึ่งของรายการเท่านั้น ซึ่งเรียกว่าด้านบนของสแต็ก (ToS)

ตัวอย่างในโลกแห่งความเป็นจริงคือกองจาน ในภาพด้านบนจะเห็นว่าเพลทที่ใส่เข้าไปสุดท้ายคืออันแรกที่ต้องถอด

การดำเนินงานที่เราจะดำเนินการ:

  1. Push→ เพิ่มองค์ประกอบลงในสแต็ก
  2. Pop→ ลบองค์ประกอบออกจากสแต็ก
  3. Peek→ รับองค์ประกอบด้านบนของสแต็ก
  4. Length→ คืนค่าความยาวของสแตก
  5. Search→ ค้นหาองค์ประกอบในสแต็ก
  6. IsEmpty→ ตรวจสอบว่าสแต็กว่างเปล่าหรือไม่
  7. Print→ พิมพ์องค์ประกอบของสแต็ก

class Stack {
constructor(){
        this.data = [];
        this.top = 0;
    }
}

  • data → เป็นอาร์เรย์ที่เราเก็บค่า
  • ด้านบน → ชี้ไปที่ดัชนีองค์ประกอบด้านบน

เมื่อเราpushเป็นองค์ประกอบในสแต็ก เราต้องเก็บไว้ในtopตำแหน่งของdataและจำเป็นต้องเพิ่มtopตัวแปรเพื่อให้topจะชี้ไปที่ตำแหน่งว่างถัดไป

push(element) {
this.data[this.top] = element;
   this.top = this.top + 1;
}

เพื่อให้ได้ความยาวของสแต็ก เราสามารถคืนtopค่าได้

length() {
return this.top;
}

เพื่อให้ได้peekองค์ประกอบของสแต็ก เราสามารถใช้top-1แอตทริบิวต์ของStackคลาส:

peek() {
return this.data[this.top -1 ];
}

isEmpty: ตรวจสอบว่าสแต็คว่างเปล่าหรือไม่

ถ้าค่าสูงสุดเท่ากับ แสดง0ว่าไม่มีองค์ประกอบในStack.

isEmpty() {
return this.top === 0;
}

เมื่อเราpopเป็นองค์ประกอบจากสแต็ก เราต้องลบองค์ประกอบในtopตำแหน่งของdataและจำเป็นต้องลดค่าtopตัวแปรเพื่อให้topจะชี้ไปที่ตำแหน่งขององค์ประกอบก่อนหน้า

pop() {
     this.top = this.top -1;
     return this.data.pop(); // removes the last element
}

pop() {
if( this.isEmpty() === false ) {
this.top = this.top -1;
       return this.data.pop(); // removes the last element
}
}

function print() {
var top = this.top - 1; // because top points to index where new    element to be inserted
while(top >= 0) { // print upto 0th index
    console.log(this.data[top]);
    top--;
  }
}

หากต้องการพิมพ์สแต็กในลำดับย้อนกลับ เราสามารถใช้การเรียกซ้ำ

function reverse() {
   this._reverse(this.top - 1 );
}
function _reverse(index) {
if(index != 0) {
      this._reverse(index-1);
   }
   console.log(this.data[index]);
}

ขอบคุณที่อ่าน. ฉันหวังว่าคุณจะชอบสิ่งนี้

Suggested posts

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

ตัดตอนมาจาก Small, Sharp Software Tools โดย Brian P. Hogan

การค้นหาข้อมูลเกี่ยวกับชื่อโดเมน

เมื่อคุณส่งคำขอไปที่ facebook.com คอมพิวเตอร์ของคุณจะค้นหาชื่อโดเมนเพื่อแปลชื่อโดเมนนั้นเป็นที่อยู่ IP เพื่อให้คอมพิวเตอร์ของคุณสามารถเชื่อมต่อได้

หลีกเลี่ยงผลร้ายของโรคหลอดเลือดสมอง: เรียนรู้จากการเดินทางของครอบครัว

หลีกเลี่ยงผลร้ายของโรคหลอดเลือดสมอง: เรียนรู้จากการเดินทางของครอบครัว

บทนำ โรคหลอดเลือดสมองเป็นเหตุฉุกเฉินทางการแพทย์ที่สามารถส่งผลกระทบต่อทุกคนได้ตลอดเวลา เกิดขึ้นเมื่อการไหลเวียนของเลือดไปยังส่วนหนึ่งของสมองหยุดชะงัก นำไปสู่การสูญเสียการทำงานของสมองอย่างกะทันหัน

Related posts

อะไรทำให้พอดคาสต์มีอิทธิพล?

อะไรทำให้พอดคาสต์มีอิทธิพล?

เมื่อสัปดาห์ที่แล้วฉันสังเกตเห็นข่าวประชาสัมพันธ์ที่เผยแพร่ผ่าน PressGazette (เว็บไซต์ข่าวของสื่ออังกฤษ) บทความประกาศว่า Acast ซึ่งเป็นบริษัทโฮสติ้งและโฆษณาพอดคาสต์ของ Scandi จะเป็นผู้นำกลุ่มผู้เผยแพร่ "อาจมีอิทธิพลมากที่สุด" ในพอดคาสต์

สองปีในการออกแบบ - ดี ไม่ดี และน่าเกลียด...

สองปีในการออกแบบ - ดี ไม่ดี และน่าเกลียด...

“หวัดดี Siri เล่น Me Dive โดย Olivia Dean” ในเดือนพฤษภาคม 2021 ฉันเริ่มฝึกงานที่ Future Academy Africa ในเมือง Akure ประเทศไนจีเรีย

บทสนทนาอันตราย

บทสนทนาอันตราย

หากเราต้องการจะเติบโตบนโลกใบนี้ต่อไป เราจะต้องสนทนาที่อันตราย คนที่ท้าทายสิ่งที่เราทำ สิ่งที่เรากำลังทำ และสิ่งที่เรากำลังจะทำต่อไป (หรือกำลังวางแผนที่จะทำ)

การแสดงเดี่ยวของสาวผมแดง

เมื่อได้รับมอบหมายจากเฮย์เดน เคธี่ถ่ายคลิปตัวเองช่วยตัวเอง

การแสดงเดี่ยวของสาวผมแดง

หลังเที่ยงคืน Hayden ขับรถพา Katie กลับไปที่หอพักของวิทยาลัยหลังจากพวกเขาอยู่ด้วยกันในตอนเย็น เธอมีเรียนแต่เช้าและไม่มีเสื้อผ้าเปลี่ยนอีกหลังจากค้างกับเขาเมื่อคืนก่อน