Bài tập tuần 4 Hàng đợi và Ngăn xếp Câu 1 Kiểu vector của thư viện chuẩn STL được hướng dẫn sử dụng trong bảng sau Phương thức Ý nghĩa Size(); Trả về kích thước hiện hành của mảng Resize(int newsi[.]
Trang 1Bài tập tuần 4- Hàng đợi và Ngăn xếp
Câu 1 Kiểu vector <T> của thư viện chuẩn STL được hướng dẫn sử dụng trong bảng sau:
Phương thức Ý nghĩa
Resize(int
cũ) thì một số phần tử bị xoá khỏi hàng
Sử dụng kiểu vector<T> để cài đặt một ngăn xếp gồm các số nguyên Mã nguồn được viết trước một phần trong bảng sau:
//stack, Queue
#include<vector>
using namespace std;
typedef struct {
vector<int> data;
} IntStack;
void push(IntStack& q, int x); // Đưa phần tử -x- vào stack
int pop(IntStack& q); // Xoá phần tử - - ra khỏi stack
bool isempty(IntStack& q); // kiểm tra stack có rỗng
Yêu cầu: Hãy viết mã nguồn đầy đủ cho các hàm push(), pop(), isempty() theo như định nghĩa của ngăn xếp
Câu 2 Cài đặt cấu trúc dữ liệu trừu tượng hàng đợi (queue) trên kiểu số nguyên (int) gồm các
xử lý cơ bản sau:
• enQueue (thêm một phần tử vào hàng đợi)
• deQueue (lấy một phần tử ra khỏi hàng đợi)
• isEmpty (kiểm tra hàng đợi có rỗng không)
Cài đặt 2 phiên bản cho cấu trúc dữ liệu trừu tượng hàng đợi: 1 phiên bản sử dụng mảng động (vector) và một phiên bản sử dụng danh sách liên kết đơn (single link list):
• Hàng đợi: Đặt tên lần lượt là CdynamicArrayQueue và CsinglyLinkedListQueue
Cài đặt hàm main() chạy thử các chức năng của các các cấu trúc dữ liệu đã cài đặt
Câu 3: Đảo ngược danh sách liên kết
Ví dụ:
Input: 2 -> 4 -> 6 -> 8 -> 10 -> NULL
Output : NULL <- 2 <- 4 <- 6 <- 8 <- 10
Trang 2Câu 4: Cho một dãy số nguyên và hai số x và k, tìm k giá trị gần nhất với x
Ví dụ:
Input: arr[] = {10, 2, 14, 4, 7, 6}, x=5, k=3
Output: 4 6 7
Input: arr[] = {-10, -50, 20, 17, 80}, x=20, k=2
Output: 17, 20
Hướng dẫn: Sử dụng cấu trúc dữ liệu hàng đợi ưu tiên – priority_queue<> C++ STL
========================= oOo =========================