Chồng vs Heap
Stack là một danh sách có thứ tự trong đó việc chèn và xóa các mục danh sách chỉ có thể được thực hiện ở một đầu được gọi là đầu. Vì lý do này, stack được coi là cấu trúc dữ liệu cuối cùng (LIFO). Heap là một cấu trúc dữ liệu đặc biệt dựa trên cây và nó thỏa mãn một thuộc tính đặc biệt gọi là thuộc tính heap. Ngoài ra, một đống là một cây hoàn chỉnh, có nghĩa là không có khoảng trống giữa các lá của cây, tức là trong một cây hoàn chỉnh, mọi cấp độ đều được điền vào trước khi thêm một cấp độ mới vào cây và các nút ở một cấp độ nhất định được lấp đầy từ trái sang phải.
Chồng là gì?
Như đã đề cập trước đó, stack là một cấu trúc dữ liệu trong đó các phần tử được thêm và xóa khỏi chỉ một đầu được gọi là đỉnh. Ngăn xếp chỉ cho phép hai hoạt động cơ bản được gọi là đẩy và pop. Hoạt động đẩy thêm một yếu tố mới vào đầu ngăn xếp. Thao tác pop sẽ loại bỏ một phần tử khỏi đỉnh ngăn xếp. Nếu ngăn xếp đã đầy, khi hoạt động đẩy được thực hiện, nó được coi là tràn ngăn xếp. Nếu một thao tác pop được thực hiện trên một ngăn xếp đã trống, thì nó được coi là một ngăn xếp ngăn xếp. Do số lượng nhỏ các hoạt động có thể được thực hiện trên một ngăn xếp, nó được coi là một cấu trúc dữ liệu bị hạn chế. Ngoài ra, theo cách xác định các thao tác đẩy và bật, rõ ràng các phần tử được thêm vào cuối cùng trong ngăn xếp sẽ ra khỏi ngăn xếp trước. Do đó, ngăn xếp được coi là cấu trúc dữ liệu LIFO.
Heap là gì?
Như đã đề cập trước đó, heap là một cây hoàn chỉnh thỏa mãn tính chất của heap. Thuộc tính heap nói rằng, nếu y là nút con của x thì giá trị được lưu trữ trong nút x phải lớn hơn hoặc bằng giá trị được lưu trữ trong nút y (tức là giá trị (x) value (y)). Thuộc tính này ngụ ý rằng nút có giá trị lớn nhất sẽ luôn được đặt ở gốc. Một đống được xây dựng bằng cách sử dụng thuộc tính này được gọi là heap tối đa. Có một biến thể khác của thuộc tính heap cho biết mặt trái của điều này. (tức là giá trị (x) ≤ giá trị (y)). Điều này ngụ ý rằng nút có giá trị nhỏ nhất sẽ luôn được đặt ở gốc, do đó được gọi là heap tối thiểu. Có một loạt các hoạt động được thực hiện trên các heap như tìm tối thiểu (tính theo heap tối thiểu) hoặc tối đa (tính theo heap tối đa), xóa tối thiểu (tính theo heap tối thiểu) hoặc tối đa (tính theo heap tối đa), tăng (tối đa Phím -heaps) hoặc giảm (tính bằng heaps), v.v..
Sự khác biệt giữa Stack và Heap là gì?
Sự khác biệt chính giữa ngăn xếp và heaps là trong khi stack là cấu trúc dữ liệu tuyến tính, heap là cấu trúc dữ liệu phi tuyến tính. Stack là một danh sách được sắp xếp theo sau thuộc tính LIFO, trong khi heap là một cây hoàn chỉnh theo sau thuộc tính heap. Hơn nữa, stack là cấu trúc dữ liệu bị hạn chế chỉ hỗ trợ một số hoạt động hạn chế như đẩy và bật, trong khi heap hỗ trợ một loạt các hoạt động như tìm và xóa tối thiểu hoặc tối đa, tăng hoặc giảm khóa và hợp nhất.