Ngăn xếp có sức chứa cố định
Ngăn xếp là cấu trúc vào sau ra trước: phần tử được đẩy vào cuối cùng là phần tử được
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, python-lists, python-classes-intro.
Nội dung đề bài
Mô tả bài toán
Ngăn xếp là cấu trúc vào sau ra trước: phần tử được đẩy vào cuối cùng là phần tử được lấy ra đầu tiên. Bọc nó trong một lớp có giới hạn sức chứa giúp bạn làm quen với việc giữ bất biến của cấu trúc, chứ không chỉ là cất dữ liệu vào danh sách.
Yêu cầu
Cài đặt lớp FixedStack với các thành phần:
- init(self, capacity): lưu sức chứa; ném ValueError nếu capacity nhỏ hơn 1.
- push(self, value): đẩy value lên đỉnh ngăn xếp; ném OverflowError nếu ngăn xếp
đã đầy. Phương thức trả về None.
- pop(self): lấy phần tử ở đỉnh ra và trả về nó; ném IndexError nếu ngăn xếp rỗng.
- peek(self): trả về phần tử ở đỉnh mà không lấy ra; ném IndexError nếu ngăn xếp rỗng.
- size(self): trả về số phần tử đang có.
Quy ước nộp bài
Nộp lớp FixedStack trong solution.py. Hệ thống khởi tạo lớp rồi gọi phương thức trực tiếp, có kiểm tra các ngoại lệ nêu trên; không dùng stdin và không in ra stdout.
Input
Hệ thống khởi tạo lớp bằng capacity, sau đó gọi lần lượt các phương thức theo kịch bản của từng bộ test. Thứ tự gọi chính là thứ tự bạn thấy trong đề.
Output
Giá trị trả về của từng lời gọi, theo đúng thứ tự đã gọi. push trả về None, pop và peek trả về phần tử ở đỉnh, size trả về một số nguyên.
Ràng buộc
- capacity từ 0 đến 8; giá trị đẩy vào là số nguyên hoặc chuỗi.
- Ngăn xếp đầy thì push phải ném OverflowError, tuyệt đối không được âm thầm bỏ phần tử cũ.
- Ngăn xếp rỗng thì pop và peek phải ném IndexError, không được trả về None.
Ví dụ 1
Input
FixedStack(init={"capacity": 2}, methods=[{"method": "push", "args": [1]}, {"method": "push", "args": [2]}, {"method": "pop"}, {"method": "size"}])
Output
[null, null, 2, 1]
Ví dụ 2
Input
FixedStack(init={"capacity": 1}, methods=[{"method": "pop"}])
Output
raises IndexError
Giải thích
Với capacity = 2, lần lượt gọi push(1), push(2), pop(), size() thì kết quả nhận được là None, None, 2, 1: phần tử 2 vào sau nên ra trước.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
