C# Stack พร้อมตัวอย่าง Push & Pop

สแต็คใน C # คืออะไร?

สแต็กเป็นคอลเลกชันกรณีพิเศษซึ่งแสดงถึงแนวคิดเข้าก่อนออกก่อน (LIFO) เพื่อทำความเข้าใจ LIFO ก่อน เรามาลองดูตัวอย่างกัน ลองนึกภาพกองหนังสือที่มีหนังสือแต่ละเล่มวางซ้อนกัน

แนวคิดเรื่องเข้าก่อนออกก่อนในกรณีของหนังสือหมายความว่าเฉพาะหนังสือที่อยู่อันดับต้นๆ เท่านั้นที่จะสามารถนำออกจากกองหนังสือได้ ไม่สามารถลบหนังสือออกจากระหว่างนั้นได้ เนื่องจากจะรบกวนการตั้งค่าของสแต็ก

ดังนั้นใน C#สแต็กก็ทำงานในลักษณะเดียวกัน องค์ประกอบจะถูกเพิ่มเข้าไปในสแต็ก โดยองค์ประกอบหนึ่งจะอยู่ด้านบนของอีกองค์ประกอบหนึ่ง กระบวนการเพิ่มองค์ประกอบเข้าไปในสแต็กเรียกว่าการดำเนินการผลัก หากต้องการลบองค์ประกอบออกจากสแต็ก คุณยังสามารถลบองค์ประกอบที่อยู่ด้านบนสุดของสแต็กได้ด้วย การดำเนินการนี้เรียกว่าการป๊อป

มาดูการดำเนินการที่มีให้สำหรับคอลเลกชัน Stack อย่างละเอียดเพิ่มเติม

ประกาศของกอง

สแต็กถูกสร้างขึ้นด้วยความช่วยเหลือของประเภทข้อมูลสแต็ก คำหลัก "ใหม่" ใช้เพื่อสร้างวัตถุของสแต็ก จากนั้นวัตถุจะถูกกำหนดให้กับตัวแปร st

Stack st = new Stack()

การเพิ่มองค์ประกอบลงในสแต็ก

วิธีการพุชใช้เพื่อเพิ่มองค์ประกอบลงในสแต็ก ไวยากรณ์ทั่วไปของคำสั่งได้รับด้านล่าง

Stack.push(element)

การลบองค์ประกอบออกจากสแต็ก

วิธี pop ใช้เพื่อลบองค์ประกอบออกจากสแต็ก การดำเนินการ pop จะส่งคืนองค์ประกอบที่อยู่ด้านบนสุดของสแต็ก ไวยากรณ์ทั่วไปของคำสั่งมีดังต่อไปนี้

 Stack.pop()

นับ

คุณสมบัตินี้ใช้เพื่อรับจำนวนรายการในสแต็ก ด้านล่างนี้คือไวยากรณ์ทั่วไปของคำสั่งนี้

Stack.Count

ประกอบด้วย

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

Stack.Contains(element)

ตอนนี้เรามาดูการทำงานในระดับรหัสกัน โค้ดที่กล่าวถึงด้านล่างทั้งหมดจะถูกเขียนถึงเรา แอปพลิเคชันคอนโซล- รหัสจะถูกเขียนลงในไฟล์ Program.cs ของเรา

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

ตัวอย่างที่ 1: วิธี Stack.Push()

ในตัวอย่างนี้เราจะเห็น

  • วิธีสร้างสแต็ก
  • วิธีการแสดงองค์ประกอบของสแต็ก และใช้วิธีการนับและบรรจุ

สแต็กใน C #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);

   foreach (Object obj in st)
   {
    Console.WriteLine(obj);
   }
    Console.WriteLine(); Console.WriteLine();
    Console.WriteLine("The number of elements in the stack " +st.Count);
    Console.WriteLine("Does the stack contain the elements 3 "+st.Contains(3));
    Console.ReadKey();
  }
 }
}

คำอธิบายรหัส:-

  1. ขั้นตอนแรกใช้ในการประกาศ Stack ที่นี่เรากำลังประกาศ "st" เป็นตัวแปรเพื่อเก็บองค์ประกอบของสแต็กของเรา
  2. ต่อไปเราจะเพิ่ม 3 องค์ประกอบลงในสแต็กของเรา แต่ละองค์ประกอบจะถูกเพิ่มด้วยวิธี Push
  3. ขณะนี้เนื่องจากไม่สามารถเข้าถึงองค์ประกอบสแต็กผ่านตำแหน่งดัชนีเช่น รายการอาร์เรย์เราจำเป็นต้องใช้วิธีอื่นในการแสดงองค์ประกอบของสแต็ก Object (obj) เป็นตัวแปรชั่วคราวซึ่งได้รับการประกาศให้เก็บแต่ละองค์ประกอบของสแต็ก จากนั้นเราใช้คำสั่ง foreach เพื่อดูแต่ละองค์ประกอบของสแต็ก สำหรับแต่ละองค์ประกอบสแต็ก ค่าจะถูกกำหนดให้กับตัวแปร obj จากนั้นเราใช้คำสั่ง Console.Writeline เพื่อแสดงค่าไปยังคอนโซล
  4. เรากำลังใช้คุณสมบัติการนับ (เซนต์นับ) เพื่อรับจำนวนรายการในสแต็ก คุณสมบัตินี้จะส่งคืนตัวเลข จากนั้นเราจะแสดงค่านี้ไปยังคอนโซล
  5. จากนั้นเราใช้เมธอดประกอบด้วยเพื่อดูว่าค่า 3 มีอยู่ในสแต็กของเราหรือไม่ สิ่งนี้จะส่งกลับค่าจริงหรือเท็จ จากนั้นเราจะแสดงค่าที่ส่งคืนนี้ไปยังคอนโซล

หากป้อนโค้ดด้านบนอย่างถูกต้องแล้วและรันโปรแกรมจะแสดงผลลัพธ์ต่อไปนี้

Output:

สแต็กใน C #

จากผลลัพธ์ เราจะเห็นว่ามีการแสดงองค์ประกอบของสแต็ก นอกจากนี้ ยังแสดงค่า True เพื่อบอกว่าค่า 3 ถูกกำหนดไว้ในสแต็กด้วย

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

ตัวอย่างที่ 2: วิธี Stack.Pop()

ตอนนี้เรามาดูฟังก์ชัน "ลบ" กัน เราจะเห็นโค้ดที่จำเป็นในการลบองค์ประกอบบนสุดออกจากสแต็ก

สแต็กใน C #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);
   
   st.Pop();

   foreach (Object obj in st)
   {
    Console.WriteLine(obj);
   }
    Console.ReadKey();
  }
 }
}

คำอธิบายรหัส:-

  1. ที่นี่เราเพิ่งออกวิธีการป๊อปซึ่งใช้ในการลบองค์ประกอบออกจากสแต็ก

หากป้อนโค้ดด้านบนถูกต้องแล้วและรันโปรแกรมจะแสดงผลลัพธ์ต่อไปนี้

Output:

สแต็กใน C #

เราจะเห็นว่าองค์ประกอบที่ 3 ถูกลบออกจากสแต็ก

สรุป

  • สแต็กนั้นใช้หลักการเข้าหลังสุดออกก่อน การดำเนินการเพิ่มองค์ประกอบเข้าไปในสแต็กเรียกว่าการดำเนินการผลัก ส่วนการดำเนินการลบองค์ประกอบออกจากสแต็กเรียกว่าการดำเนินการป๊อป