-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCTDLGT_Stack_1.c
70 lines (58 loc) · 1.73 KB
/
CTDLGT_Stack_1.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
// Nhan Văn Ánh
//ngày 7/4/23
#include <stdio.h>
#define MAX_SIZE 100 // Kích thước tối đa của stack
// Khai báo cấu trúc dữ liệu Stack
typedef struct {
int data[MAX_SIZE]; // Mảng lưu trữ dữ liệu trong stack
int top; // Vị trí của phần tử đầu trong stack
} Stack;
// Hàm khởi tạo stack rỗng
void init(Stack* s) {
s->top = -1;
}
// Hàm thêm giá trị vào đỉnh stack (push)
void push(Stack* s, int value) {
if (s->top == MAX_SIZE - 1) {
printf("Stack tran!");
} else {
s->data[++(s->top)] = value;
}
}
// Hàm xóa phần tử đầu trong stack (pop)
void pop(Stack* s) {
if (s->top == -1) {
printf("Stack rong!");
} else {
s->top--;
}
}
// Hàm kiểm tra stack có trống hay không
int isEmpty(Stack* s) {
return (s->top == -1);
}
// Hàm lấy giá trị phần tử đầu trong stack mà không xóa nó (top)
int getTop(Stack* s) {
if (s->top == -1) {
printf("Stack rong!");
return -1;
} else {
return s->data[s->top];
}
}
int main() {
Stack s; // Khởi tạo đối tượng Stack
init(&s); // Khởi tạo stack rỗng
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("Top of stack: %d\n", getTop(&s)); // In giá trị phần tử đầu trong stack
pop(&s); // Xóa phần tử đầu trong stack
printf("Top of stack after pop: %d\n", getTop(&s)); // In giá trị phần tử đầu trong stack sau khi pop
if (isEmpty(&s)) {
printf("Stack rong!\n"); // Kiểm tra stack có trống hay không
} else {
printf("Stack khong rong!\n");
}
return 0;
}