- vừa được xem lúc

[DSA] Stacks and Queues

0 0 1

Người đăng: Tri Lương

Theo Viblo Asia

Stacks

Giới thiệu

image.png

Là cấu trúc dữ liệu LIFO (Last In First Out).

Stacks được dùng để xử lý lời gọi hàm (call stack), chức năng undo/redo, cho routing, …

Khởi tạo

Tạo stack từ linked list

class NodeLinkedList { value: string; next: NodeLinkedList | null; constructor(value) { this.value = value; this.next = null; }
} class Stack { top: NodeLinkedList | null; size: number;
}

Khởi tạo các method

push

 push(val) { const newNode = new NodeLinkedList(val); if (!this.top) { this.top = newNode; } else { newNode.next = this.top; this.top = newNode; } this.size++; return this; }

pop

 pop() { if (!this.top) return null; const poppedValue = this.top.value; this.top = this.top.next; this.size--; return poppedValue; }

Độ phức tạp

Method Big O
Insertion O(1)
Removal O(1)
Searching O(n)
Access O(n)

Queues

image.png

Là kiểu dữ liệu FIFO (Fist In First Out)

Khởi tạo

Khởi tạo từ linked list

class NodeLinkedListQueue { value: string; next: NodeLinkedListQueue | null; constructor(value) { this.value = value; this.next = null; }
} class Queue { rear: NodeLinkedListQueue | null; front: NodeLinkedListQueue | null; size: number; constructor() { this.rear = null; this.front = null; this.size = 0; } enqueue(val) {} dequeue() {}
}

Khởi tạo các method

enqueue

 enqueue(val) { const newNode = new NodeLinkedListQueue(val); if (!this.rear) { this.rear = newNode; this.front = newNode; } else { this.front.next = newNode; this.front = newNode; } this.size++; return this; }

dequeue

 dequeue() { if (!this.front) return null; const dequeueValue = this.rear.value; this.rear = this.rear.next; return dequeueValue; }

Độ phức tạp

Method Big O
Insertion O(1)
Removal O(1)
Searching O(n)
Access O(n)

Bình luận

Bài viết tương tự

- vừa được xem lúc

Nhập môn lý thuyết cơ sở dữ liệu - Phần 1 : Tổng quan

# Trong bài viết này mình sẽ tập trung vào chủ đề tổng quan về Cơ sở dữ liệu. Phần 1 lý thuyết nên hơi chán các bạn cố gắng đọc nhé, chắc lý thuyết mới làm bài tập được, kiến thức còn nhiều các bạn cứ

0 0 112

- vừa được xem lúc

Cấu trúc dữ liệu và giải thuật: Danh sách liên kết đơn (Singly Linked List)

Danh sách liên kết là 1 cấu trúc dữ liệu được sử dụng để lưu trữ 1 tập hợp các dữ liệu. Danh sách liên kết có các tính chất sau:.

0 0 54

- vừa được xem lúc

Bạn đang lưu dữ liệu dạng cây vào CSDL theo cách nào?

Dữ liệu dạng cây (tree data structure) là dạng dữ liệu rất thường thấy ở các ứng dụng. Những chỗ bạn từng bắt gặp có dùng cấu trúc dạng cây có thể là:.

0 0 82

- vừa được xem lúc

Sự khác nhau giữa biến tham chiếu kiểu List và ArrayList trong Java là gì?

1. Đặt vấn đề.

0 0 47

- vừa được xem lúc

8 kiểu cấu trúc dữ liệu mà mọi lập trình viên cần phải biết.

Trong lĩnh vực Khoa học máy tính, cấu trúc dữ liệu được định nghĩa là những cách để tổ chức và lưu trữ dữ liệu trong máy tính để chúng ta có thể thực hiện các hoạt động trên dữ liệu được lưu trữ đó mộ

0 0 32

- vừa được xem lúc

Data structures: Arrays

Tổng quan:. Tiếp theo trong series Data structures and Algorithms, hôm nay mình sẽ giới thiệu đến các bạn một loại Cấu trúc dữ liệu đơn giản và hay gặp nhất, đó là Array.

0 0 47