Cấu trúc dữ liệu & Giải thuật Bộ môn Công nghệ Tri thức BÀI TẬP THỰC HÀNH 01 ÔN TẬP 1 Con trỏ Sử dụng kĩ thuật con trỏ để hoàn thiện các hàm sau 1 Viết hàm nhập vào một mảng số nguyên gồm n phần tử vớ[.]
Cấu trúc liệu & Giải thuật Bộ môn Công nghệ Tri thức BÀI TẬP THỰC HÀNH 01: ÔN TẬP Con trỏ Sử dụng kĩ thuật trỏ để hoàn thiện hàm sau: Viết hàm nhập vào mảng số nguyên gồm n phần tử với a trỏ trỏ tới vùng nhớ mảng vừa nhập: • void inputArray(int* &a, int &n); Viết hàm hủy cấp phát động cho mảng: • void dellocateArray(int* &a); Viết hàm in hình giá trị mảng: • void printArray(int* a, int n); Viết hàm tìm giá trị nhỏ mảng: • int findMin(int* a, int n); Viết hàm tìm phần tử có trị tuyệt đối lớn mảng: • int findMaxModulus(int* a, int n); Viết hàm kiểm tra xem mảng có tăng dần hay khơng: • bool isAscending(int* a, int n); Viết hàm tính tổng phần tử mảng: • int sumofArray(int* a, int n); Viết hàm đếm số lượng số nguyên tố mảng: • int countPrime(int* a, int n); Viết hàm đảo ngược mảng mà khơng dùng mảng phụ: • void reverseArray(int* &a, int n); Từ câu 10 đến 13 yêu cầu tìm kiếm vị trí giá trị key cho trước Trả vị trí tìm Nếu khơng tìm trả −1 10 Tìm kiếm tuần tự: • int LinearSearch(int* a, int n, int key); 11 Tìm kiếm (sử dụng phương pháp lính canh): • int sentinelLinearSearch(int* a, int n, int key); 12 Tìm kiếm nhị phân: • int BinarySearch(int* a, int n, int key); 13 Tìm kiếm nhị phân (sự dụng đệ quy): • int recursiveBinarySearch(int* a, int left, int right, int key); Trang / Cấu trúc liệu & Giải thuật Bộ môn Công nghệ Tri thức Đệ quy Sử dụng kỹ thuật Đệ quy để giải yêu cầu sau: Viết hàm tính tổng bình phương số tự nhiên nhỏ n: S = 12 + 22 + + n2 • int sumOfSquares(int n); Viết hàm tìm ước chung lớn số nguyên a, b: • int gcd(int a, int b); Số Fibonacci thứ n tính sau: F (n) = F (n − 1) + F (n − 2) Viết hàm tính số Fibonacci thứ n • int fib(int n); Danh sách liên kết Cho danh sách liên kết đơn định nghĩa sau: struct NODE{ int key; NODE* pNext; }; struct List{ NODE* pHead; NODE* pTail; }; Sinh viên viết hàm thực yêu cầu sau: Khởi tạo danh sách rỗng với kiểu liệu List: Xóa tất NODE List cho trước: • List* createList(); • void removeAll(List* &L); Khởi tạo NODE từ số nguyên cho trước: In tất phần tử List cho trước: • NODE* createNode(int data); • void printList(List* L); Chèn số nguyên vào đầu List cho trước: Đếm số lượng phần tử List cho trước: • bool addHead(List* &L, int Data); • int countElements(List* L); Chèn số nguyên vào cuối List cho trước: 10 Đảo List cho trước (tạo List mới): • bool addTail(List* &L, int Data); Xóa NODE List cho trước: • List* reverseList(List* L); 11 Xóa tất phần từ trùng List cho trước: • void removeHead(List* &L); Xóa NODE cuối List cho trước: • void removeDuplicate(List* &L); 12 Xóa giá trị key khỏi List cho trước: • void removeTail(List* &L); • bool removeElement(List* &L, int key); Trang / Cấu trúc liệu & Giải thuật Bộ môn Công nghệ Tri thức Quy định nộp • Sinh viên nộp dạng MSSV.rar(.zip) • Mỗi phần cần đặt thư mục riêng Tất nằm thư mục MSSV (Lưu ý: nộp file h cpp) • Các làm giống bị điểm môn học Trang / ...Cấu trúc liệu & Giải thuật Bộ môn Công nghệ Tri thức Đệ quy Sử dụng kỹ thuật Đệ quy để giải yêu cầu sau: Viết hàm tính tổng bình... thuật Bộ môn Cơng nghệ Tri thức Quy định nộp • Sinh viên nộp dạng MSSV.rar(.zip) • Mỗi phần cần đặt thư mục riêng Tất nằm thư mục MSSV (Lưu ý: nộp file h cpp) • Các làm giống bị điểm môn học Trang... struct NODE{ int key; NODE* pNext; }; struct List{ NODE* pHead; NODE* pTail; }; Sinh viên viết hàm thực yêu cầu sau: Khởi tạo danh sách rỗng với kiểu liệu List: Xóa tất NODE List cho trước: • List*