Computer >> Máy Tính >  >> Lập trình >> Lập trình

Các ứng dụng của ngăn xếp trong cấu trúc dữ liệu

Cấu trúc dữ liệu Stack là Last In First Out (LIFO). Cấu trúc dữ liệu này có một số ứng dụng quan trọng trong các khía cạnh khác nhau. Những thứ này giống như bên dưới -

  • Xử lý Biểu thức -
    • Infix thành Postfix hoặc Infix thành Prefix Conversion -

      Ngăn xếp có thể được sử dụng để chuyển đổi một số biểu thức infix thành tiền tố tương đương hoặc tương đương tiền tố của nó. Các ký hiệu hậu tố hoặc tiền tố này được sử dụng trong máy tính để diễn đạt một số biểu thức. Những biểu thức này không quá quen thuộc với biểu thức infix, nhưng chúng cũng có một số ưu điểm tuyệt vời. Chúng tôi không cần duy trì thứ tự của toán tử và dấu ngoặc đơn.

    • Đánh giá hậu tố hoặc tiền tố -

      Sau khi chuyển đổi thành ký hiệu tiền tố hoặc hậu tố, chúng ta phải đánh giá biểu thức để có kết quả. Vì mục đích đó, chúng tôi cũng cần sự trợ giúp của cấu trúc dữ liệu ngăn xếp.

  • Thủ tục bẻ khóa -

    Backtracking là một trong những kỹ thuật thiết kế thuật toán. Với mục đích đó, chúng tôi đi sâu vào một số cách, nếu cách đó không hiệu quả, chúng tôi quay lại trạng thái trước đó và đi vào một số con đường khác. Để quay lại từ trạng thái hiện tại, chúng ta cần lưu trữ trạng thái trước đó. Vì mục đích đó, chúng ta cần ngăn xếp. Một số ví dụ về backtracking là tìm giải pháp cho vấn đề Knight Tour hoặc vấn đề N-Queen, v.v.

  • Một công dụng tuyệt vời khác của ngăn xếp là trong quá trình gọi và trả về hàm. Khi chúng ta gọi một hàm từ một hàm khác, câu lệnh gọi hàm đó có thể không phải là câu lệnh đầu tiên. Gọi chức năng xong, chúng tôi cũng phải từ khu chức năng quay lại nơi đó, nơi chúng tôi đã bỏ quyền kiểm soát. Vì vậy, chúng tôi muốn tiếp tục nhiệm vụ của mình, không phải khởi động lại. Vì lý do đó, chúng tôi lưu trữ địa chỉ của bộ đếm chương trình vào ngăn xếp, sau đó chuyển đến phần thân hàm để thực thi nó. Sau khi hoàn tất quá trình thực thi, nó sẽ bật ra địa chỉ từ ngăn xếp và gán địa chỉ đó vào bộ đếm chương trình để tiếp tục tác vụ một lần nữa.