Bài tập cấu trúc dữ liệu giải thuật mảng, danh sách liên kết

7 1.9K 20
Bài tập cấu trúc dữ liệu giải thuật   mảng, danh sách liên kết

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài tập phần II Phần: Các cấu trúc liệu bản- Mảng, Danh sách liên kết, danh sách tuyến tính Bài Kiểu liệu ? cho ví dụ minh họa Bài Kiểu liệu trừu tượng gì? Nó khác so với định nghĩa kiểu liệu? Bài Cấu trúc liệu ? Bài Phân loại cấu trúc liệu? So sánh đặc điểm phân loại Bài Trình bày ưu nhược điểm mảng (bao gồm mảng cấp phát tĩnh mảng cấp phát động) Bài Viết hàm để thực thêm phần tử vào vị trí sau phần tử thứ k hai trường hợp : mảng, danh sách liên kết đơn Bài Viết hàm reverse để in phần tử danh sách liên kết đơn theo thứ tự đảo ngược typedef struct Node { int data; struct Node *pNext; } NODE; //pHead trỏ đến đầu danh sách cần đảo ngược void reverse(NODE *pHead) { //Thân hàm } Ví dụ: với danh sách ban đầu chứa phần tử {2, 27, 5, 14, 9}, kết 9, 14, 5, 27, Hãy đánh giá thời gian thực thuật toán bạn theo O-lớn Bài Hoàn phần thân hàm reverse để đảo ngược danh sách liên kết đơn typedef struct Node { int data; struct Node *pNext; } NODE; //pHead trỏ đến đầu danh sách cần đảo ngược void reverse(NODE *&pHead) { //Thân hàm } Ví dụ với danh sách ban đầu chứa phần tử {2, 27, 5, 14, 9}, kết danh sách {9, 14, 5, 27, 2} Hãy đánh giá thời gian thực thuật toán bạn theo O-lớn Bài Viết lại hàm thực thao tác chèn, tìm kiếm xóa phần tử danh sách liên kết đơn dùng vòng lặp thay dùng đệ quy Bài 10 Viết lại hàm xóa phần tử danh sách liên kết đơn mà không cần dùng thêm hàm search_list, predecessor_list Bài 11 Cho dãy số nguyên có số lượng phần tử lớn Hãy viết hàm find để tìm in hình hai cặp phần tử có độ chênh lệch lớn nhỏ dãy cho Độ chệnh lệch số 𝑎, 𝑏 định nghĩa 𝑑 = |𝑎 − 𝑏| //A tên mảng chứa phần tử //n số lượng phần tử mảng, n>2 void find(int A[], int n) { //thân hàm } Ví dụ với dãy {1,5,3,2,7,4} cặp phần tử có chêch lệch lớn (1, 7), cặp phần tử có độ chêch lệch nhỏ (2,3) Trong trường hợp có nhiều cặp cần đưa cặp thỏa mãn Hãy đưa đánh giá thời gian thực thuật toán bạn theo O-lớn Bài 12 Cho dãy số nguyên khác theo thứ tự tăng dần Viết chương trình kiểm tra xem có tồn phần tử mà giá trị vị trí Ví dụ dãy {−10,−3, 3, 5, 7}, ta tìm a3 = Trong dãy {2, 3, 4, 5, 6, 7}, không tồn phần tử Chú ý: Vị trí phần tử tính Bài 13 Để biểu diễn kiểu liệu ADT xâu ký tự máy tính người ta làm theo cách sau Lưu trữ mảng, dùng ký tự đăc biệt để báo hiệu kết thúc xâu (ký tự ‘\0’) Mảng phải khai báo có số phần tử tối đa lớn số lượng ký tự xâu Lưu trữ mảng, phần tử mảng ta dùng để chứa số ký tự thời xâu ký tự, phần tử ký tự 3 Dùng danh sách liên kết để chứa ký tự, kết thúc xâu phần tử cuối NULL Hãy nhận xét hiệu phương pháp theo tiêu chí a) Kích thước nhớ cần dùng để lưu trữ xâu ký tự b) Các ký tự mà xâu biểu diễn c) Thời gian để truy cập vào ký tự thứ 𝑖 xâu d) Thời gian thực phép chèn, xóa ký tự xâu Bài 14 Giả sử có trỏ trỏ đến phần tử cần xóa danh sách, có cách khác để xóa phần tử khỏi danh sách mà không cần phải duyệt danh sách để tìm phần tử đứng trước không ? Nếu có mô tả phương pháp bạn Bài 15 Viết chương trình tìm phần tử có giá trị lớn nhất, nhỏ danh sách móc nối đơn Bài 16 Xây dựng chương trình biểu diễn đa thức 𝑃𝑛 (𝑥) = 𝑎𝑛 𝑥 𝑛 + 𝑎𝑛−1 𝑥 𝑛−1 + +𝑎1 𝑥 + 𝑎0 với thao tác hiển thị, cộng, trừ, nhân hai đa thức Bài 17 So sánh ưu nhược điểm mảng cấu trúc liên kết dùng để lưu trữ kiểu liệu trừu tượng danh sách tuyến tính Bài 18 Cần phải lưu trữ danh sách tuyến tính thông tin khách hàng ngày tháng siêu thị Ta chọn cấu trúc liệu để lưu trữ cho thao tác tìm kiếm nhanh tiết kiệm nhớ biết: a) Không biết trước số lượng khách hàng tối đa b) Biết trước số lượng khách hàng tối đa số lượng khách hàng ngày khác biến động lớn c) Biết trước số lượng khách hàng tối đa, số lượng khách hàng ngày chênh lệch không nhiều Các cấu trúc lựa chọn : Mảng tĩnh, mảng động, cấu trúc móc nối Hãy giải thích lựa chọn bạn trường hợp Bài 19 Cài đặt chương trình mô toán Josephus slide Bài 20 Cho dãy số gồm 𝑛 số, viết chương trình in phần tử dãy theo chiều tăng dần tần số xuất Ví dụ : dãy 1, 3, 4, 5, 7, 2, 3, ta in 1, 2, 4, 7, 3, Bài 21 Cài đặt hàm thực thao tác thêm, xóa tìm kiếm danh sách liên kết đôi Bài 22 Cài đặt hàm thực thao tác thêm, xóa tìm kiếm danh sách liên kết đôi nối vòng (danh sách nối đôi sử dụng nút đầu giả) Bài 23 Viết chương trình cài đặt mảng động để lưu trữ danh sách phần tử theo cách sau: • Ban đầu ta cấp phát nhớ động 10 phần tử • Nếu mà ta phải thêm phần tử mảng đầy ta gấp đôi kích thước mảng copy toàn phần tử mảng cũ vào nửa đầu mảng mới, sau thêm phần tử vào mảng • Nếu mà xóa phần tử mà sau xóa số phần tử mảng nhỏ 1/2 kích thước mảng ta tiến hành tạo mảng với kích thước ½ kích thước mảng cũ Sau copy toàn phần tử mảng cũ sang mảng Hãy đánh giá thời gian thực trường hợp tốt nhất, tồi thao tác thêm xóa phần tử Chỉ trường hợp mà cách làm cho kết tồi Bạn có cách để cải thiện hiệu ? Bài 24 Cho hai xâu ký tự s1 s2 Hãy viết hàm stringmatch để kiểm tra xem xâu ký tự s2 có xuất s1 hay không Nếu có trả vị trí xuất nó, ngược lại trả giá trị -1 Ví dụ: s1=”AbbAbbbabbb”, s2=”ab” hàm stringmatch(s1,s2) trả giá trị Hãy đánh giá hiệu thuật toán bạn Bài 25 Trò chơi dò mìn Giả sử mô tả bãi mìn ma trận với kích thước 𝑁 × 𝑀 (𝑁 hàng 𝑀 cột) Những vị trí có mìn đánh dấu ký tự ‘*’, vị trí mìn ký tự ‘.’ Hãy xây dựng ma trận tương đương để mô tả cảnh báo có mìn ô xung quanh Với ô có mìn ta biểu diễn ký tự ‘*’, ô xung quanh ta biểu diễn chữ số mô tả số ô có mìn mà lân cận với Ở ô lân cận với ô xung quanh Ví dụ Bãi mìn kích thước × biểu diễn lại sau Hãy xây dựng hàm Calculate(char MineField[10][10], char Output[10][10], int N, int M) Để tính toán giá trị cho mảng Output với đầu vào mảng mô tả bãi mìn MineField ≤ 𝑁, 𝑀 ≤ 10 kích thước thực bãi mìn Bài 26 Cho kiểu liệu trừu tượng tập hợp với • Các phần tử tập hợp số nguyên • Các phép toán tập hợp gồm : o Member(x,S): Kiểm tra xem phần tử x có thuộc tập hợp S hay không o Union(A,B): Hợp hai tập hợp A, B, trả tập hợp 𝐴 ∪ 𝐵 thông qua tập hợp A, B, hàm o Intersection(A,B): Giao hai tập hợp, trả 𝐴 ∩ 𝐵 thông qua tập hợp A, B, hàm o Substract(A,B): Hiệu hai tập hơp, trả 𝐴 − 𝐵 thông qua tập hợp A, B, hàm o Insert(x,S): thêm phần tử x vào tập hợp S o Delete(x,S) : loại bỏ phần tử x khỏi tập S (nếu x có S) Hãy cài đặt ADT sử dụng phương pháp biểu diễn a) Mảng b) Danh sách liên kết c) Xâu bit (bit biểu diễn phần tử có tập hợp bit biểu diễn phần tử không có) Chú ý: Đối với cách biểu diễn thứ phần tử phải biểu diễn theo thứ tự xác định Các phần tử tập hợp không trùng Bài 27 Cho dãy số nguyên dương gồm n số, khoảng cách hai vị trí độ chênh lệch giá trị hai số vị trí Ví dụ cho dãy gồm số 1, 3, 4, 3, Chêch lệch số thứ − = Chọn vị trí k bất dãy n số, tổng độ chệnh lệch vị trí k với tất 𝑛 − vị trí lại tính tổng độ chênh lệch số vị trí 𝑘 tới 𝑛 − vị trí lại Ví dụ với k=2 (số giá trị 3) tổng độ chêch lệch ứng với 2+1+0+4=7 Hãy viết chương trình tìm vị trí k cho có tổng độ chênh lệch nhỏ Bài 28 Viết chương trình đảo ngược thứ tự từ câu nhập vào từ bàn phím Ví dụ Câu đầu vào “ the quick brown fox jumps over the lazy dog” Thì kết hiển thị hình câu “dog lazy the over jumps fox brown quick the” Bài 29 Nhập vào từ bàn phím dãy số thực gồm n số (0 ... 1, 2, 4, 7, 3, Bài 21 Cài đặt hàm thực thao tác thêm, xóa tìm kiếm danh sách liên kết đôi Bài 22 Cài đặt hàm thực thao tác thêm, xóa tìm kiếm danh sách liên kết đôi nối vòng (danh sách nối đôi... toán bạn theo O-lớn Bài Viết lại hàm thực thao tác chèn, tìm kiếm xóa phần tử danh sách liên kết đơn dùng vòng lặp thay dùng đệ quy Bài 10 Viết lại hàm xóa phần tử danh sách liên kết đơn mà không... cộng, trừ, nhân hai đa thức Bài 17 So sánh ưu nhược điểm mảng cấu trúc liên kết dùng để lưu trữ kiểu liệu trừu tượng danh sách tuyến tính Bài 18 Cần phải lưu trữ danh sách tuyến tính thông tin

Ngày đăng: 08/01/2016, 11:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan