Professional Documents
Culture Documents
A[]={3,7,1,5,2,4}
2.List:
2.1/Linked List
Trong quá trình khai thác Stack bằng danh sách liên kết, mỗi phần tử trong Stack sẽ được
lưu trữ trong một nút trong danh sách liên kết. Nút đầu tiên trong danh sách liên kết sẽ đại
diện cho phần tử đầu tiên được thêm vào Stack và nút cuối cùng sẽ đại diện cho phần tử
cuối cùng được thêm vào Stack.
Các thao tác push, pop và peek trên Stack có thể được khai thác bằng các phương thức
tương ứng trên danh sách liên kết. Khi thêm một phần tử mới vào Stack, ta có thể thêm
một nút mới vào đầu danh sách liên kết. Khi lấy ra một phần tử từ Stack, ta có thể xóa nút
đầu tiên của danh sách liên kết và trả về giá trị của phần tử đó. Khi lấy giá trị của phần tử
ở đỉnh của Stack, ta có thể truy cập giá trị của nút đầu tiên trong danh sách liên kết mà
không làm thay đổi danh sách.
Tóm lại, việc sử dụng danh sách liên kết để khai thác Stack có thể giúp giải quyết một số
vấn đề về kích thước mảng cố định và có thể cho phép thêm hoặc xóa các phần tử một
cách linh hoạt hơn.
CODE:
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
};
void push(int x) {
Node* temp = new Node();
temp->data = x;
temp->next = top;
top = temp;
}
int pop() {
if (top == NULL) {
cout << "Stack Underflow" << endl;
return -1;
}
Node* temp = top;
int x = temp->data;
top = top->next;
delete temp;
return x;
}
int peek() {
if (top == NULL) {
cout << "Stack Underflow" << endl;
return -1;
}
return top->data;
}
bool is_empty() {
return top == NULL;
}
int main() {
push(1);
push(2);
push(3);
cout << "Top element: " << peek() << endl;
cout << "Popped element: " << pop() << endl;
cout << "Top element: " << peek() << endl;
return 0;
}
3.2/Queue(FIFO):
4.Tree:
4.1/Binary Insertion Tree( Cây “Shine” Phân Tìm Kiếm”)
4.2/BTree:
4.3/AVL
5.Hash Table: