Tôi biết về System.Collections.Stack. Tôi đang tìm một lớp hỗ trợ PushFront() & PushBack().Có một lớp ngăn xếp hai mặt trong .net không?
Trả lời
Tại sao không chỉ sử dụng/gói LinkedList<T>
? Nó có các phương thức AddFirst
và AddLast
. Bạn có thể bọc nó để ẩn các phương thức AddBefore
vv.
Thuật ngữ phổ biến cho điều này là deque (có nghĩa là hàng đợi đã kết thúc gấp đôi). Nếu vì lý do nào đó, hãy gói LinkedList<T>
không đủ (cần!), Bạn có thể xem triển khai của Eric Lippert là immutable deque.
Có vẻ như bạn muốn một cái gì đó thường được gọi là deque. Tôi gần nhất nhận thức được trong .NET là LinkedList<T>
. Tôi không tin rằng có một được xây dựng từ một bộ đệm tròn (mở rộng theo yêu cầu), đó là cách bạn có thể muốn xây dựng nó từ đầu.
Tất nhiên, bạn có thể tự mình thực hiện - nhưng tôi có thể sử dụng LinkedList<T>
trừ khi tôi có lý do thực sự không tốt. Eric Lippert cũng có an immutable implementation you could look at (blog post covering it), nhưng rõ ràng là bạn muốn viết một loạt các bài kiểm tra, v.v ... và bạn có thể không muốn một sự bất biến.
họ nên xem xét đổi tên trang web này thành askjonskeet.com –
@ SethReno: Điều đó đã được thực hiện ... hãy dùng thử :) –
Tại sao không sử dụng LinkedList<T>
? Nó cho phép bổ sung để bắt đầu, kết thúc và bất cứ nơi nào ở giữa. Nếu bạn không muốn phơi bày một số phương thức LinkedList<T>
thì bạn luôn có thể bọc nó và chỉ phơi bày các phương pháp mà bạn muốn phơi bày.
Những gì bạn đang tìm kiếm là một deque. Dưới đây là ví dụ: http://www.codeproject.com/KB/recipes/deque.aspx
- 1. Có thể rò rỉ bộ nhớ có thể xảy ra ở ngăn xếp trong .NET không?
- 2. Giới hạn bộ nhớ ngăn xếp .NET
- 3. Ngăn xếp công nghệ java này trong .net?
- 4. Mã hóa một chuỗi có ngăn xếp
- 5. @TestExecutionListeners là không có mặt cho lớp
- 6. Ngăn xếp ngăn xếp lạ?
- 7. Mỗi luồng có ngăn xếp riêng không?
- 8. Các trường của lớp, chúng có được lưu trữ trong ngăn xếp hoặc đống không?
- 9. Có bất kỳ lớp Trợ giúp sắp xếp Json Tắt-Kệ nào trong .NET BCL không?
- 10. Khóa ngăn xếp và xếp hàng miễn phí trong C#
- 11. Ngoại lệ không có dấu vết ngăn xếp trong Java
- 12. Ngăn xếp ngăn xếp là gì?
- 13. Thao tác .NET CIL của ngăn xếp đánh giá
- 14. Cách chuyển đổi tốt nhất một dấu vết ngăn xếp thành HTML (sử dụng .NET - C#)
- 15. So sánh hai DataTables và chọn hàng mà không có mặt trong bảng thứ hai
- 16. Các lớp có nguồn gốc không phải QObject "luôn luôn" được đặt trên ngăn xếp?
- 17. Biến chỉ có ngăn xếp có thể có trong C++ không?
- 18. "Sắp xếp ngăn xếp" là gì?
- 19. C++, ngăn chặn cá thể lớp được tạo trên ngăn xếp (trong quá trình biên dịch)
- 20. Không hiển thị đường dẫn tệp của máy xây dựng trong ngăn xếp ngăn xếp
- 21. C#: làm cách nào để ẩn một phương thức khỏi ngăn xếp ngăn xếp?
- 22. Tôi không hiểu lỗi tràn ngăn xếp với DispatchMessageW lặp lại trong ngăn xếp cuộc gọi
- 23. Tại sao .NET không ghi nhật ký ngăn xếp cho các ngoại lệ StackOverflow?
- 24. C++ Ngăn xếp ngăn xếp Visual Studio với mảng 2D
- 25. Có mặt tiền chứa trong Boost không?
- 26. Tại sao khung .Net không có lớp xếp hàng ưu tiên?
- 27. Kiểm tra xếp hạng Wilcoxon một mặt bằng scipy
- 28. C# sao chép ngăn xếp
- 29. Có một hàm .NET để xác thực tên lớp không?
- 30. Liên lạc nối tiếp một nửa hai mặt trong Python
Tôi chắc chắn nếu nó tồn tại, bạn sẽ tìm thấy nó trong không gian tên bộ sưu tập. – ChaosPandion
Cái mà bạn gọi là * Ngăn xếp * không phải là một nếu nó hỗ trợ đẩy lùi. –