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

#2. Tổng quan về cấu trúc dữ liệu - data structure

0 0 10

Người đăng: Son Nguyen Hong

Theo Viblo Asia

Cấu trúc dữ liệu được chia thành 2 loại chính:

  • Linear data structure - Cấu trúc dữ liệu tuyến tính
  • Non-linear data structure - Cấu trúc dữ liệu phi tuyến tính Nghe qua bằng tiếng Việt rất là kêu :U , nhưng chúng ta cứ hiểu qua loa rằng thằng linear thì nó lưu trữ data của chúng ta nối đuôi nhau, còn thằng nonlinear thì nó sẽ rẽ nhánh.

Linear data structure - cấu trúc tuyến tính

Với loại cấu trúc này, các phần tử sẽ được lưu trữ liên tiếp, nối đuôi nhau. Chính vì vậy mà cũng khá dễ hiểu và dễ sử dụng. Các loại cấu trúc dữ liệu điển hình thuộc loại này đó là:

1. Array - Mảng

Đây có lẽ là loại cấu trúc mà anh em được tiếp cận đầu tiên từ khi bắt đầu học lập trình và cũng là loại sơ khai nhất. Các phân tử dữ liệu được lưu trữ tại các ô nhớ liên tiếp nhau, và các phân tử cũng phải cùng loại dữ liệu.

2. Stack - Ngăn xếp

Trong cấu trúc này các phân tử sẽ được lữu trữ và tuân theo nguyên tắc LIFO - Last In First Out, tức là vào trước ra sau, vào sau ra trước. Trông nó giống như cái ống đựng cầu lông vậy:

3. Queue - Hàng đợi

Ngược lại với Stack, Queue sẽ cho phép data của chúng ta được lưu trữ và tuân theo quy tắc FIFO - First In First Out, tức là vào trước thì ra trước, chúng có vẻ công bằng hơn người anh em Stack của nó 😃) . Nó được đặt tên như vậy bởi nó hoạt động giống theo dòng người mua vé thôi:

4. Linked List - Danh sách liên kết

Người anh em của array, nhưng nó sẽ được lưu trữ bằng phương thức đặc biệt và phức tạp hơn - nó bao gồm các node, mỗi node sẽ có 2 phần là datacon trỏ(pointer) - nó sẽ trỏ tới cái node khác. Các bạn nên cố gắng hiểu bản chất của loại cấu trúc này bởi nó là dạng dễ nhất của cấu trúc động rồi.

Non-linear data structure - cấu trúc phi tuyến tính

Khác với cách lưu trữ của linear, nó sẽ tổ chức các dữ liệu theo dạng cấp bậc và không theo trình tự nhất định nào cả, mỗi phần tử sẽ liên kết với 1 hoặc nhiều phần tử khác. 2 cấu trúc điển hình là TreeGraph.

1. Tree - Cây

Với tree, node cha và node con sẽ được nối với nhau bằng 1 cạnh (edge). Node cao nhất là gọi là root và cũng là node duy nhất không có node cha.

2. Graph - Đồ thị

Mỗi node của graph sẽ được gọi là đỉnh (vertex) và chúng sẽ được nối với nhau qua cạnh (edge)

Lưu ý rằng tree cũng là 1 dạng của graph nhưng có một đặc trưng để phân biệt giữa 2 cấu trúc này đó là: Tree sẽ không có bất kì node nào mà tồn tại con đường để đi rồi quay lại chính nó, nhưng với graph thì có và chúng được gọi là chu kì - cycle.


Bài viết này mô tả cấu trúc dữ liệu một cách phổ quát và ngắn gọn nhất, để hiểu hơn chúng ta sẽ phải đào sâu hơn với mỗi loại cấu trúc và các loại biến thể của chúng. Cảm ơn các bạn đã đọc!

Bình luận

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

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

Đôi chút về cấu trúc dữ liệu và thuật toán

Theo anh Phạm Huy Hoàng (toidicodedao) đã viết trong blog của mình là kiến thức trong ngành IT có 2 loại, một là càng để lâu thì càng cũ, lạc hậu và trở lên vô dụng. Hai là càng để lâu thì càng có giá trị thậm chí ngày càng có giá.

0 0 32

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

Cấu trúc dữ liệu Merkle Tree

Cây Merkle là một cây nhị phân có thứ tự được xây dựng từ một dãy các đối tượng dữ liệu (d1, d2,...,dn) sử dụng hàm băm h. Các “lá” của cây là các giá trị băm h(di) đối với 1 ≤ i ≤ n.

0 0 46

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

Cách xây dựng cấu trúc dữ liệu Stack và Queue.

Mở đầu. Hello các bạn, hôm nay mình sẽ chia sẻ với các bạn cách để có thể tự xây dựng 2 loại cấu trúc dữ liệu stack(ngăn xếp) và queue(hàng đợi) sử dụng mảng trong C++;.

0 0 31

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

Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản

Ở Việt Nam có một nghịch lý ai cũng biết: hầu hết sinh viên ngành CNTT đều đã học cấu trúc dữ liệu và giải thuật, thuộc các môn bắt buộc. Thế nhưng lại rất hiếm khi ứng dụng vào công việc hoặc bị loại

0 0 36

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

Chương 1: Introduction - Analysis of Algorithrms

Trong bài viết này mình sẽ nói về cách chúng ta sẽ sử dụng để phân tích và so sánh các loại thuật toán khác nhau. 1.

0 0 15

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

Chương 1: Introduction - Các khái niệm cơ bản

Lời nói đầu. Trước khi có máy tính, đã có các thuật toán.

0 0 16