Câu hỏi:

13/07/2024 162

Ngăn xếp S được cài đặt bằng mảng T có N phân tử, phần tử đầu tiên có chỉ số 0. Hãy viết các hàm cơ bản trên ngăn xếp S. 

Lưu ý: 

- Biến topldx cho biết đỉnh top của ngăn xếp. 

- Ngăn xếp là rỗng thì topldx = -1. Khi topldx = N-1 thì ngăn xếp bị tràn (overflow), không thể thêm phần tử mới vào ngăn xếp S. 

- Viết hàm stackOverflow(S) trả về True nếu ngăn xếp S bị tràn; ngược lại trả về False. Hàm stackOverflow(S) sẽ tạo ngoại lệ ValueError(). Sử dụng hàm stackOverflow(S) để kiểm tra ngăn xếp S chưa bị tràn trước khi gọi hàm push(S, x)

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

def push(S, x):

        try:

            if not S.stackOverflow():

                S.topldx += 1

                S.T[S.topldx] = x

        except ValueError as e:

            print(e)

def pop(S):

        if S.isEmpty():

            raise IndexError(“Ngăn xếp rỗng!")

        item = S.T[S.topldx]

        S.T[S.topldx] = None 

        S.topldx -= 1

        return item

def isEmptyStack(S):

        return S.topldx == -1

def isFull(S):

        return S.topldx == self.size - 1

 

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Lời giải

def is_valid_expression(expression):

    # Khởi tạo ngăn xếp rỗng

    stack = []

    # Tạo một từ điển để ghép các dấu ngoặc đóng với dấu ngoặc mở tương ứng

    matching_parentheses = {')': '(', '}': '{', ']': '['}

 

    # Duyệt qua từng ký tự trong biểu thức

    for char in expression:

        if char in matching_parentheses.values():

            stack.append(char)

        elif char in matching_parentheses.keys():

                    if not stack or stack.pop() != matching_parentheses[char]:

                return False

    return not stack

Lời giải

Giả sử chúng ta lần lượt thực hiện dãy các lệnh sau (ngăn xếp S ban đầu là rỗng). push(S,1); push(S,2); pop(S); push(S,3); pop(S); pop(S).

Dãy các phần tử lần lượt được đưa ra khỏi ngăn xếp là các số: 2,3,1.

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP