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()
ในตัวอย่างนี้เราจะเห็น
- วิธีสร้างสแต็ก
- วิธีการแสดงองค์ประกอบของสแต็ก และใช้วิธีการนับและบรรจุ
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(); } } }
คำอธิบายรหัส:-
- ขั้นตอนแรกใช้ในการประกาศ Stack ที่นี่เรากำลังประกาศ "st" เป็นตัวแปรเพื่อเก็บองค์ประกอบของสแต็กของเรา
- ต่อไปเราจะเพิ่ม 3 องค์ประกอบลงในสแต็กของเรา แต่ละองค์ประกอบจะถูกเพิ่มด้วยวิธี Push
- ขณะนี้เนื่องจากไม่สามารถเข้าถึงองค์ประกอบสแต็กผ่านตำแหน่งดัชนีเช่น รายการอาร์เรย์เราจำเป็นต้องใช้วิธีอื่นในการแสดงองค์ประกอบของสแต็ก Object (obj) เป็นตัวแปรชั่วคราวซึ่งได้รับการประกาศให้เก็บแต่ละองค์ประกอบของสแต็ก จากนั้นเราใช้คำสั่ง foreach เพื่อดูแต่ละองค์ประกอบของสแต็ก สำหรับแต่ละองค์ประกอบสแต็ก ค่าจะถูกกำหนดให้กับตัวแปร obj จากนั้นเราใช้คำสั่ง Console.Writeline เพื่อแสดงค่าไปยังคอนโซล
- เรากำลังใช้คุณสมบัติการนับ (เซนต์นับ) เพื่อรับจำนวนรายการในสแต็ก คุณสมบัตินี้จะส่งคืนตัวเลข จากนั้นเราจะแสดงค่านี้ไปยังคอนโซล
- จากนั้นเราใช้เมธอดประกอบด้วยเพื่อดูว่าค่า 3 มีอยู่ในสแต็กของเราหรือไม่ สิ่งนี้จะส่งกลับค่าจริงหรือเท็จ จากนั้นเราจะแสดงค่าที่ส่งคืนนี้ไปยังคอนโซล
หากป้อนโค้ดด้านบนอย่างถูกต้องแล้วและรันโปรแกรมจะแสดงผลลัพธ์ต่อไปนี้
Output:
จากผลลัพธ์ เราจะเห็นว่ามีการแสดงองค์ประกอบของสแต็ก นอกจากนี้ ยังแสดงค่า True เพื่อบอกว่าค่า 3 ถูกกำหนดไว้ในสแต็กด้วย
หมายเหตุ:คุณสังเกตเห็นว่าองค์ประกอบสุดท้ายที่ถูกเพิ่มเข้าไปในสแต็กจะแสดงก่อน นี่คือองค์ประกอบที่อยู่ด้านบนสุดของสแต็ก จำนวนองค์ประกอบของสแต็กยังแสดงในผลลัพธ์ด้วย
ตัวอย่างที่ 2: วิธี Stack.Pop()
ตอนนี้เรามาดูฟังก์ชัน "ลบ" กัน เราจะเห็นโค้ดที่จำเป็นในการลบองค์ประกอบบนสุดออกจากสแต็ก
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(); } } }
คำอธิบายรหัส:-
- ที่นี่เราเพิ่งออกวิธีการป๊อปซึ่งใช้ในการลบองค์ประกอบออกจากสแต็ก
หากป้อนโค้ดด้านบนถูกต้องแล้วและรันโปรแกรมจะแสดงผลลัพธ์ต่อไปนี้
Output:
เราจะเห็นว่าองค์ประกอบที่ 3 ถูกลบออกจากสแต็ก
สรุป
- สแต็กนั้นใช้หลักการเข้าหลังสุดออกก่อน การดำเนินการเพิ่มองค์ประกอบเข้าไปในสแต็กเรียกว่าการดำเนินการผลัก ส่วนการดำเนินการลบองค์ประกอบออกจากสแต็กเรียกว่าการดำเนินการป๊อป