ใน C++ STL สแต็กถูกใช้เป็นคอนเทนเนอร์ซึ่งถูกนำไปใช้เป็นโครงสร้าง LIFO LIFO หมายถึง เข้าก่อนออกก่อน กองสามารถมองเป็นกองหนังสือ โดยที่หนังสือถูกจัดเรียงไว้เหนืออีกเล่มหนึ่ง และเล่มสุดท้ายที่ใส่เข้าไปจะเป็นเล่มแรกที่จะถูกถอดออก จึงเรียกว่าเป็นโครงสร้าง LIFO
การดำเนินการที่เกี่ยวข้องกับสแต็กคือ -
-
บน() - ฟังก์ชันนี้จะคืนค่าการอ้างอิงไปยังองค์ประกอบบนสุดของสแต็ก
ไวยากรณ์ - name_of_stack.top()
พารามิเตอร์ - ไม่มีพารามิเตอร์
คืนค่า - อ้างอิงถึงองค์ประกอบบนสุดของคอนเทนเนอร์สแต็ก
-
ดัน() - ฟังก์ชันนี้ใช้เพื่อแทรกองค์ประกอบลงในคอนเทนเนอร์สแต็ก
ไวยากรณ์ - name_of_stack.push(องค์ประกอบ)
พารามิเตอร์ - ฟังก์ชันนี้ใช้องค์ประกอบที่จะแทรก
คืนค่า - ไม่คืนอะไรเลย
-
ป๊อป() - ฟังก์ชันนี้ใช้เพื่อลบองค์ประกอบออกจากคอนเทนเนอร์สแต็ก
ไวยากรณ์ - name_of_stack.pop()
พารามิเตอร์ - ไม่มีพารามิเตอร์
คืนค่า - ลบองค์ประกอบบนสุดของสแต็กแล้วส่งคืน
-
ขนาด() - ฟังก์ชันนี้ใช้เพื่อคำนวณจำนวนองค์ประกอบทั้งหมดที่มีอยู่ในสแต็ก
ไวยากรณ์ - name_of_stack.size()
พารามิเตอร์ - ไม่มีพารามิเตอร์
คืนค่า - ส่งกลับจำนวนองค์ประกอบในกอง
-
ว่างเปล่า() - ฟังก์ชั่นนี้ใช้ตรวจสอบว่า stack ว่างหรือไม่
ไวยากรณ์ - name_of_stack.empty()
พารามิเตอร์ - ไม่มีพารามิเตอร์
คืนค่า - ส่งคืนค่าบูลีนที่เป็นจริงหรือเท็จ เป็นจริงเมื่อสแต็กว่างเปล่าและเป็นเท็จเมื่อสแต็กไม่ว่างเปล่า
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main(){ //create a stack container stack <int> newStack; //insert elements to a stack newStack.push(10); newStack.push(20); newStack.push(30); newStack.push(40); //check whether the values are pushed in stack or not //using empty() if(!newStack.empty()){ //calculate size of a stack cout<<"Stack size is: "<< newStack.size(); } else{ cout<<"Stack is empty"; } cout<<"\nElements in the stack are:"; while(!newStack.empty()){ cout<<" "<< newStack.top(); newStack.pop(); } return 0; }
ผลลัพธ์
Stack size is: 4 Elements in the stack are: 40 30 20 10