Mỗi node quản lý thông tin cá nhân, các môn học: Toán, Vật lý, Tiếng anh, CTDLamp;GT. Trong đó môn học cũng là một cấu trúc gồm tên môn, số tín chỉ. Điểm cũng là một cấu trúc bao gồm Mã sinh viên, mã môn học. Nhập 1 danh sách cho đến khi nhập dấu “” vào tên đối tượng. 18.2. Sắp xếp danh sách theo chiều tăng dần của điểm toán. 18.3. Sắp xếp danh sách theo chiều tăng dần của điểm trung bình. 18.4 Tìm sinh viên có điểm trung bình MaxMin
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á KHOA: CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN HỌC PHẦN: CTDL> TÊN BÀI TẬP LỚN: TẠO MENU QUẢN LÝ DANH SÁCH SINH VIÊN Sinh viên thực Lớp Khóa HÀ TIẾN DŨNG DCCNTT12.10.12 K12 ĐINH XUÂN HIẾU DCCNTT12.10.12 K12 VŨ THANH HẢI DCCNTT12.10.12 K12 Bắc Ninh, năm 20…… BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á KHOA: CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN HỌC PHẦN: CTDL> Nhóm: 13 TÊN (BÀI TẬP LỚN): TẠO MENU QUẢN LÝ DANH SÁCH SINH VIÊN STT Sinh viên thực Mã sinh viên HÀ TIẾN DŨNG 20213409 ĐINH XUÂN HIẾU 20213331 VŨ THANH HẢI 20213345 Điểm số Điểm chữ CÁN BỘ CHẤM CÁN BỘ CHẤM (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG CƠ SỞ LÝ THUYẾT Cấu trúc liệu (Data Structure) ? 1.1 Độ phức tạp thời gian thực thi cấu trúc liệu giải thuật: Giải thuật ? 2.1 Phân tích giải thuật: .5 2.2 Độ phức tạp giải thuật (Algorithm Complexity): .6 2.3 Độ phức tạp nhớ (Space complexity) phân tích giải thuật: 2.4 Độ phức tạp thời gian (Time Complexity) phân tích giải thuật: Cấu trúc liệu mảng ? 3.1 Biểu diễn Cấu trúc liệu mảng: 3.2 Hoạt động chèn phần tử vào mảng: .10 3.3 Hoạt động xóa phần tử từ mảng: 11 3.4 Hoạt động tìm kiếm: .13 3.5 Hoạt động cập nhật (Hoạt động update): .14 4.Cấu trúc liệu ngăn xếp (Stack): .16 4.1 Ngăn xếp (Stack) ? 16 4.2 Biểu diễn cấu trúc liệu ngăn xếp (Stack): 16 4.3 Các hoạt động cấu trúc liệu ngăn xếp: .17 4.4 Phương thức peek() cấu trúc liệu ngăn xếp: .17 4.5 Phương thức isFull() cấu trúc liệu ngăn xếp 18 4.6 Phương thức isEmpty() cấu trúc liệu ngăn xếp: 18 4.7 Hoạt động PUSH cấu trúc liệu ngăn xếp: 19 4.8 Giải thuật cho hoạt động PUSH cấu trúc liệu ngăn xếp: 20 4.9 Hoạt động POP cấu trúc liệu ngăn xếp: .21 4.10 Giải thuật cho hoạt động POP: 21 Duyệt biểu thức hậu tố : 22 4.11 Chuyển biểu thức dạng trung tố sang hậu tố: 23 CHƯƠNG .23 ĐỀ TÀI THỰC HIỆN 23 CHƯƠNG 24 THỰC HIỆN CHƯƠNG TRÌNH 24 Ngôn ngữ sử dụng 24 2.Phần mềm thực 24 Phương pháp nghiên cứu 24 Mục tiêu nghiên cứu 24 Các thư viện sử dụng .24 Các hàm sử dụng 24 Các bước thực 25 7.1 Khai báo kiểu struct bao gồm: .25 7.2 Tạo Node danh sách liên kết .26 7.3 Tạo hàm cấp phát động cho node 26 7.4 Khởi tạo hàm kiểm tra rỗng đếm số lượng 27 7.5 Khởi tạo hàm thêm sinh viên vào danh sách 27 7.6 Khởi tạo hàm xóa sinh viên danh sách 30 7.7 Khởi tạo hàm in thông tin sinh viên, thông tin môn học hàm in danh sách sinh viên, thông tin môn học 32 7.8 Khởi tạo Hàm xếp điểm toán theo thứ tự tăng dần điểm trung bình theo thứ tự tăng dần 33 7.9 Khởi tạo hàm tìm sinh viên có điểm trung bình lớn bé 35 7.10 Hàm int main() 37 LỜI NÓI ĐẦU Cấu trúc liệu giải thuật môn học sinh viên ngành Công nghệ thông tin Các cấu trúc liệu giải thuật xem yếu tố quan trọng lập trình, câu nói tiếng Niklaus Wirth: Chương trình = Cấu trúc liệu + Giải thuật (Programs = Data Structures + Algorithms) Nắm vững cấu trúc liệu giải thuật sở để sinh viên tiếp cận với việc thiết kế xây dựng phần mềm sử dụng cơng cụ lập trình đại Cấu trúc liệu xem phương pháp lưu trữ liệu máy tính nhằm sử dụng cách có hiệu liệu Và để sử dụng liệu cách hiệu cần phải có thuật tốn áp dụng liệu Do vậy, cấu trúc liệu giải thuật yếu tố tách rời có liên quan chặt chẽ với Việc lựa chọn cấu trúc liệu ảnh hưởng lớn tới việc lựa chọn áp dụng giải thuật Tiếp theo nhóm em khai quát kiến thức trình bày chương trình quản lý sinh viên Nếu có thiếu sót mong thầy góp ý bảo nhóm em CHƯƠNG CƠ SỞ LÝ THUYẾT Cấu trúc liệu (Data Structure) ? -Cấu trúc liệu cách lưu trữ, tổ chức liệu có thứ tự, có hệ thống để liệu sử dụng cách hiệu Dưới hai khái niệm tảng hình thành nên cấu trúc liệu: Interface: Mỗi cấu trúc liệu có Interface Interface biểu diễn tập hợp phép tính mà cấu trúc liệu hỗ trợ Một Interface cung cấp danh sách phép tính hỗ trợ, loại tham số mà chúng chấp nhận kiểu trả phép tính Implementation (có thể hiểu triển khai): Cung cấp biểu diễn nội cấu trúc liệu Implementation cung cấp phần định nghĩa giải thuật sử dụng phép tính cấu trúc liệu -Đặc điểm Cấu trúc liệu: Chính xác: Sự triển khai Cấu trúc liệu nên triển khai Interface cách xác Độ phức tạp thời gian (Time Complexity): Thời gian chạy thời gian thực thi phép tính cấu trúc liệu phải nhỏ Độ phức tạp nhớ (Space Complexity): Sự sử dụng nhớ phép tính cấu trúc liệu nên nhỏ Ngày nay, ứng dụng ngày phức tạp lượng liệu ngày lớn với nhiều kiểu đa dạng Việc làm xuất vấn đề lớn mà lập trình viên phải đối mặt: Tìm kiếm liệu: Giả sử có triệu hàng hóa lưu giữ vào kho hàng hóa Và giả sử có ứng dụng cần để tìm kiếm hàng hóa Thì thực tìm kiếm, ứng dụng phải tìm kiếm hàng hóa triệu hàng hóa Khi liệu tăng lên việc tìm kiếm trở lên chậm tốn Tốc độ vi xử lý: Mặc dù vi xử lý có tốc độ cao, nhiên có giới hạn lượng liệu lên tới hàng tỉ ghi tốc độ xử lý khơng cịn nhanh Đa yêu cầu: Khi hàng nghìn người dùng thực phép tính tìm kiếm Web Server cho dù Web Server có nhanh đến việc phải xử lý hàng nghìn phép tính lúc thực khó Để xử lý vấn đề trên, cấu trúc liệu giải pháp tuyệt vời Dữ liệu tổ chức cấu trúc liệu theo cách để thực tìm kiếm phần tử liệu u cầu tìm thấy 1.1 Độ phức tạp thời gian thực thi cấu trúc liệu giải thuật: Có trường hợp thường sử dụng để so sánh thời gian thực thi cấu trúc liệu khác nhau: Trường hợp xấu (Worst Case): tình mà phép tính cấu trúc liệu tốn thời gian tối đa (thời gian dài nhất) Ví dụ với ba số 1, 2, xếp theo thứ tự giảm dần thời gian thực thi dài (và trường hợp xấu nhất); cịn xếp theo thứ tự tăng dần thời gian thực thi ngắn (và trường hợp tốt nhất) Trường hợp trung bình (Average Case): miêu tả thời gian thực thi trung bình phép tính cấu trúc liệu Trường hợp tốt (Best Case): tình mà thời gian thực thi phép tính cấu trúc liệu Ví dụ -Thuật ngữ Cấu trúc liệu: Dữ liệu: Dữ liệu giá trị tập hợp giá trị Phần tử liệu: Phần tử liệu đơn vị đơn lẻ giá trị Các phần tử nhóm: Phần tử liệu mà chia thành phần tử gọi phần tử nhóm Các phần tử bản: Phần tử liệu mà bị chia nhỏ thành phần tử gọi phần tử Thuộc tính Thực thể: Một thực thể mà chứa vài thuộc tính đó, thuộc tính gán giá trị Tập hợp thực thể: Các thực thể mà có thuộc tính tương tự cấu thành tập hợp thực thể Trường: Trường đơn vị thông tin biểu diễn thuộc tính thực thể Bản ghi: Bản ghi tập hợp giá trị trường thực thể cho File: Là tập hợp ghi thực thể tập hợp thực thể cho Giải thuật ? -Giải thuật (hay cịn gọi thuật tốn - tiếng Anh Algorithms) tập hợp hữu hạn thị để thực thi theo thứ tự để thu kết mong muốn Nói chung giải thuật độc lập với ngôn ngữ lập trình, tức giải thuật triển khai nhiều ngơn ngữ lập trình khác Xuất phát từ quan điểm cấu trúc liệu, số giải thuật quan trọng: Giải thuật Tìm kiếm: Giải thuật để tìm kiếm phần tử cấu trúc liệu Giải thuật Sắp xếp: Giải thuật để xếp phần tử theo thứ tự Giải thuật Chèn: Giải thuật để chèn phần từ vào cấu trúc liệu Giải thuật Cập nhật: Giải thuật để cập nhật (hay update) phần tử tồn cấu trúc liệu Giải thuật Xóa: Giải thuật để xóa phần tử tồn từ cấu trúc liệu -Đặc điểm giải thuật: Khơng phải tất thủ tục gọi giải thuật Một giải thuật nên có đặc điểm sau: Tính xác định: Giải thuật nên rõ ràng không mơ hồ Mỗi giai đoạn (hay bước) nên rõ ràng mang mục đích định Dữ liệu đầu vào xác định: Một giải thuật nên có nhiều liệu đầu vào xác định Kết đầu ra: Một giải thuật nên có nhiều liệu đầu xác định, nên kết nối với kiểu kết bạn mong muốn Tính dừng: Các giải thuật phải kết thúc sau số hữu hạn bước Tính hiệu quả: Một giải thuật nên thi hành với nguồn có sẵn, tức có khả giải hiệu vấn đề điều kiện thời gian tài nguyên cho phép Tính phổ biến: Một giải thuật có tính phổ biến giải thuật giải lớp vấn đề tương tự Độc lập: Một giải thuật nên có thị độc lập với phần code lập trình Cách viết giải thuật ? Bạn đừng tìm, khơng có tiêu chuẩn cho trước để viết giải thuật Như bạn biết, ngơn ngữ lập trình có vịng lặp (do, for, while) lệnh điều khiển luồng (if-else), … Bạn sử dụng lệnh để viết giải thuật Chúng ta viết giải thuật theo cách thức theo bước Viết giải thuật tiến trình thực thi sau bạn định vị rõ ràng vấn đề cần giải Từ việc định vị vấn đề, thiết kế giải pháp để giải vấn đề sau viết giải thuật -Ví dụ viết giải thuật: Bạn theo dõi ví dụ minh họa để thấy rõ bước cách viết giải thuật Tất nhiên ví dụ đơn giản ví dụ minh họa mở đầu cho cách viết giải thuật thơi, nên nghĩ đơn giản tốt Bài toán: Thiết kế giải thuật để cộng hai số hiển thị kết Bước 1: Bắ t đầ u Bước 2: Khai báo ba sốa, b & c Bước 3: Định nghĩa giá trị a & b Bước 4: Cộng giá trị a & b Bước 5: Lưu trữ kế t Bước vào biế n c Bước 6: In biế n c Bước 7: Kế t thúc Các giải thuật nói cho lập trình viên cách để viết code Ngồi ra, bạn viết giải thuật cho toán sau: Bước Bước Bước Bước Bước 1: 2: 3: 4: 5: Bắ t đầ u Lấ y giá trị a & b c ← a + b Hiể n thị c Kế t thúc Trong thiết kế phân tích giải thuật, thường phương thức thứ hai sử dụng để miêu tả giải thuật Cách thứ hai giúp dễ dàng phân tích giải thuật bỏ qua phần định nghĩa không cần thiết Nhìn vào cách thứ hai này, người ta biết phép tính sử dụng cách tiến trình thực thi 2.1 Phân tích giải thuật: ... TIN BÀI TẬP LỚN HỌC PHẦN: CTDL> Nhóm: 13 TÊN (BÀI TẬP LỚN): TẠO MENU QUẢN LÝ DANH SÁCH SINH VIÊN STT Sinh viên thực Mã sinh viên HÀ TIẾN DŨNG 20213409 ĐINH XUÂN HIẾU 20213331 VŨ THANH HẢI 20213345... danh sách liên kết .26 7.3 Tạo hàm cấp phát động cho node 26 7.4 Khởi tạo hàm kiểm tra rỗng đếm số lượng 27 7.5 Khởi tạo hàm thêm sinh viên vào danh sách 27 7.6 Khởi tạo hàm xóa sinh. .. viên vào danh sách 27 7.6 Khởi tạo hàm xóa sinh viên danh sách 30 7.7 Khởi tạo hàm in thông tin sinh viên, thông tin môn học hàm in danh sách sinh viên, thông tin môn học 32 7.8 Khởi tạo Hàm