Như các bạn đã biết Một ngăn xếp là một cấu trúc dữ liệu trừu tượng (Abstract Data Type – viết tắt là ADT), hầu như được sử dụng trong hầu hết mọi ngôn ngữ lập trình. Đặt tên là ngăn xếp bởi vì nó hoạt động như một ngăn xếp trong đời sống thực, ví dụ như một cỗ bài hay một chồng đĩa, …
Để hiểu rõ hơn về cấu trúc dữ liệu ngăn xếp, các bạn học lập trình có thể xem giải thuật mô tả stack bằng ngôn ngữ lập trình c như sau:
Chương trình minh họa Ngăn xếp (Stack) trong C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#include <stdio.h> int MAXSIZE = 8; int stack[8]; int top = -1; int isempty() { if(top == -1) return 1; else return 0; } int isfull() { if(top == MAXSIZE) return 1; else return 0; } int peek() { return stack[top]; } int pop() { int data; if(!isempty()) { data = stack[top]; top = top - 1; return data; }else { printf("Khong the thu thap du lieu, ngan xep (Stack) la trong.\n"); } } int push(int data) { if(!isfull()) { top = top + 1; stack[top] = data; }else { printf("Khong the chen du lieu, ngan xep (Stack) da day.\n"); } } int main() { // chen cac phan tu vao ngan xep push(3); push(5); push(9); push(1); push(12); push(15); printf("Phan tu tai vi tri tren cung cua ngan xep: %d\n" ,peek()); printf("Cac phan tu: \n"); // in cac phan tu trong ngan xep while(!isempty()) { int data = pop(); printf("%d\n",data); } printf("Ngan xep da day: %s\n" , isfull()?"true":"false"); printf("Ngan xep la trong: %s\n" , isempty()?"true":"false"); return 0; } |
Sau khi biên dịch và chạy chương trình các bạn sẽ nhận được thấy kết quả trong lập trình c như sau:
Nếu bạn chưa rõ về cơ chế hoạt động của cấu trúc dữ liệu ngăn xếp có thể tham khảo bài viết: tại đây