ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส/stack
stack เป็นโครงสร้างข้อมูล แบบ LIFO
การใช้งานและประกาศตัวแปร
แก้ไขต้องนำเข้า header file "stack" โดย #include <stack>
ให้ T คือชนิดข้อมูลใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร stack คือ stack <T> var;
method
แก้ไขpush
แก้ไขคำอธิบาย | เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ stack ใช้เวลา
|
---|---|
พารามิเตอร์ | มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง stack |
คืนค่า | ไม่มี |
ฟังก์ชั่นต้นแบบ | void push(T);
|
ข้อควรระวัง | ไม่มี |
pop
แก้ไขคำอธิบาย | เป็นการลบข้อมูลชนิด T ทางด้านปลายของ stack ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | ไม่มี |
ฟังก์ชั่นต้นแบบ | void pop();
|
ข้อควรระวัง | หาก size ของ stack เป็น 0 จะเกิด error |
top
แก้ไขคำอธิบาย | เป็นการหาค่าที่อยู่ด้านปลายของ stack ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | ข้อมูลชนิด T ที่อยู่ด้านปลายของ stack |
ฟังก์ชั่นต้นแบบ | T top();
|
ข้อควรระวัง | หาก size ของ stack เป็น 0 จะเกิด error |
size
แก้ไขคำอธิบาย | เป็นการหาว่าขณะนี้ stack มีขนาดเท่าไหร่ ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | จำนวนเต็ม บอกถึงขนาดของ stack |
ฟังก์ชั่นต้นแบบ | int size();
|
ข้อควรระวัง | ไม่มี |
empty
แก้ไขคำอธิบาย | เป็นการหาว่าขณะนี้ stack ว่างหรือไม่ ใช้เวลา |
---|---|
พารามิเตอร์ | ไม่มี |
คืนค่า | ค่า true เมื่อ stack ว่าง (ขนาดเป็น 0)
ค่า false เมื่อ stack ไม่ว่าง (ขนาดมากกว่า 0) |
ฟังก์ชั่นต้นแบบ | bool empty();
|
ข้อควรระวัง | ไม่มี |
ตัวอย่างโค้ด
แก้ไข#include <cstdio>
#include <stack>
using namespace std;
struct ST{
int a, b;
};
int main(){
stack <int> S; // []
S.push(13); // [13]
S.push(12); // [13,12]
S.push(11); // [13,12,11]
S.push(10); // [13,12,11,10]
printf("%d\n", S.top()); // => 10
S.pop(); // [13,12,11]
printf("%d\n", S.size()); // => 3
while(not S.empty()) S.pop(); // []
S.pop() // => Error
S.top() // => Error
ST tmp;
stack <ST> T; // []
tmp.a = 5;
tmp.b = 3;
T.push(tmp); // [(5,3)]
printf("%d\n", T.top().b); // => 3
return 0;
}