ข้ามไปเนื้อหา

ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส/stack

จาก วิกิตำรา

stack เป็นโครงสร้างข้อมูล แบบ LIFO

การใช้งานและประกาศตัวแปร

[แก้ไข | แก้ไขต้นฉบับ]

ต้องนำเข้า header file "stack" โดย #include <stack>

ให้ T คือชนิดข้อมูลใดๆ และ var คือชื่อตัวแปร มีรูปแบบการประกาศตัวแปร stack คือ stack <T> var;

คำอธิบาย เป็นการเพิ่มข้อมูลชนิด T ลงทางด้านปลายของ stack ใช้เวลา
พารามิเตอร์ มีเพียงตัวเดียวคือข้อมูลชนิด T ที่ต้องการจะใส่ลง stack
คืนค่า ไม่มี
ฟังก์ชั่นต้นแบบ void push(T);
ข้อควรระวัง ไม่มี
คำอธิบาย เป็นการลบข้อมูลชนิด T ทางด้านปลายของ stack ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า ไม่มี
ฟังก์ชั่นต้นแบบ void pop();
ข้อควรระวัง หาก size ของ stack เป็น 0 จะเกิด error
คำอธิบาย เป็นการหาค่าที่อยู่ด้านปลายของ stack ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า ข้อมูลชนิด T ที่อยู่ด้านปลายของ stack
ฟังก์ชั่นต้นแบบ T top();
ข้อควรระวัง หาก size ของ stack เป็น 0 จะเกิด error
คำอธิบาย เป็นการหาว่าขณะนี้ stack มีขนาดเท่าไหร่ ใช้เวลา
พารามิเตอร์ ไม่มี
คืนค่า จำนวนเต็ม บอกถึงขนาดของ stack
ฟังก์ชั่นต้นแบบ int size();
ข้อควรระวัง ไม่มี
คำอธิบาย เป็นการหาว่าขณะนี้ 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;
}
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 stack
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 queue
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 priority_queue
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 deque
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 vector
พัฒนา 25% ตั้งแต่ 21 กุมภาพันธ์ 2556 map
พัฒนา 0% ตั้งแต่ 21 กุมภาพันธ์ 2556 set