1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập cuối kì thực hành cấu trúc dữ liệu và giải thuật

57 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thực Hành Cấu Trúc Dữ Liệu Và Giải Thuật
Tác giả Nguyễn Hữu Dịnh
Người hướng dẫn Nguyễn Thị Thủy Trang
Trường học Đại Học Đà Nẵng
Chuyên ngành Cấu Trúc Dữ Liệu Và Giải Thuật
Thể loại báo cáo
Năm xuất bản 2024
Thành phố Đà Nẵng
Định dạng
Số trang 57
Dung lượng 3,4 MB

Nội dung

BAI BAO CAO CUOI KY Bài 1: Viết chương trình tạo một menu danh sách liên kết đơn để quản lý danh sách sinh viên thực hiện các công việc sau:... 1 Tạo danh sách sinh viên, quá trình nhập

Trang 1

DAI HOC DA NANG

TRUONG PAI HOC SU PHAM KY THUAT

Sinh viên thực hiện: Nguyễn Hữu Dịnh MSV: 23115053122305

Trang 2

Đà Nẵng, tháng 12 năm 2024

Trang 3

MỤC LỤC

BÀI BẢO CÁO CUỒI KỲ 5:-22222:2222111222211112121111212111120011112.0111121012 1 re 1 Bai 1: Viét chương trình tạo một menu danh sách liên kết đơn đề quản lý danh sách sinh

hàm Insert_First, Insert_After, Insert_ Last cho phù hợp (2c co 17

5) Xóa | sinh vién: dya vào vị trí nhập (tuong ty nhu thém) 00.000 ee 22

7) Sắp XÊp theo mã sinh viên tăng dần và giảm dần khi thông báo người dùng chọn I8 ;1 080 a‹ä 26

Bài 2: Viết chương trình cài đặt các phương pháp sắp xếp Shell Sort, Heap Sort, Merge Sort áp dụng cho mảng các sô nguyên được nhập từ bàn phím cc co 5553552 28 1) Shell SOYí L2 1 2 222111 11112115 111111150115 1115511511111 key 36

"no ‹4diiI 37 Sa he 38 Bài 3: Viết lại chương trỉnh ở bài l với đữ liệu của mảng được nhập từ file t exf Input.fxt, xuat đữ liệu đã sắp xếp ra l file text oufput.fX 2 0 1 2112 HH HH He 39

IS 1 54 2) OUtPUEAXL -.4 54

Trang 4

BAI BAO CAO CUOI KY

Bài 1: Viết chương trình tạo một menu danh sách liên kết đơn để quản lý danh sách sinh viên thực hiện các công việc sau:

Trang 5

NUT *Insert_First(NUT *H, SinhVien 5V) { NUT *p = Tao_Nut(SV);

Trang 7

NUT *tam =H;

while (tam != NULL) {

printf(" | %12d | %ti18s | %ti5s | %.2f |\n", tamti>sv.MaSV, tamti>sv.TenSV, tamti>sv.Lop, tamti>sv.DCK);

Trang 9

if (tam != NULL && tamti>tiep != NULL) {

NUT *nutXoa = tamti>tiep;

tamti>tiep = nutXoati>tiep;

free(nutXoa);

Trang 10

printf("Da xoa sinh vien sau vi tri %d\n", pos);

if (tam != NULL && tamti>tiep != NULL) {

NUT *nutXoa = tamti>tiep;

Trang 11

printf("Tim thay sinh vien:\n");

printf("Ma SV: %d\nTen SV: %s\nLop: %s\nDCK: %.2f\n", tamti>sv.MasvV, tamti>sv.TenSV, tamti>sv.Lop, tamti>sv.DCK);

Trang 12

NUT *SapXep(NUT *H, int tangDan) {

if (H == NULL || Hti>tiep == NULL) {

return H;

}

for (NUT *i =H; iti>tiep != NULL; i = iti>tiep) {

for (NUT *j = iti>tiep; j != NULL; j = jti>tiep) {

if ((tangDan && iti>sv.MaSV > jti>sv.MaSV) | | (!tangDan && iti>sv.MaSV < jti

Trang 13

printf("\n5 Xoa sinh vien");

printf("\nó Tim kiem sinh vien theo ma"); printf("\n7 Sap xep danh sach");

printf("\n8 Xoa toan bo danh sach"); printf("\n9 Thoat chuong trinh");

Trang 14

getchar(); // Xoa bo nho dem

fgets(sv.TenSV, sizeof(sv.TenSV), stdin); sv.TenSV[strcspn(sv.TenSV, "\n")] = '\0'; printf("Nhap lop: ");

fgets(sv.Lop, sizeof(sv.Lop), stdin); sv.Lop[strcspn(sv.Lop, "\n")] = '\O'; printf("Nhap diem cuoi ky: ");

getchar(); // Xoa bo nho dem

fgets(sv.TenSV, sizeof(sv.TenSV), stdin); sv.TenSV[strcspn(sv.TenSV, "\n")] = '\0';

Trang 15

printf("Nhap vi tri can them (1 la dau danh sach, 2 la them vao sau vi tri

nhap tu ban phim, 3 la them vao cuoi danh sach): ");

Trang 16

printf("Nhap ten moi: ");

getchar(); // Xoa bo nho dem

fgets(tenMoi, sizeof(tenMoi), stdin);

Trang 18

printf("Chon cach sap xep (1: Tang dan, 0: Giam dan): "); scanf("%d", &tangDan);

Trang 19

1) Tạo danh sách sinh viên, quá trình nhập sẽ dừng lại khi nhập mã sinh viên= 0Ú

Tao danh sach sinh vien

Them sinh vien vao danh sach

5 Xoa sinh vien

9 Thoat chuong trinh

MaSV (nhap 0 de dung): 2305

ten SV: Huu Dinh

Trang 20

2) Thêm sinh viên vào danh sách với vị trí nhập vào: dựa vào vị trí đã nhập, gọi cac ham Insert_First, Insert_After, Insert_Last cho phù hợp

Thém dau:

1 Tao danh sach sinh vie

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap MaSV: 123

Nhap ten SV: Khang

Nhap Lop: 12

Nhap diem cuoi ky: 5

Nhap vi tri can them (1 La dau danh sach, 2 La them vao sau vi tri nhap tu ban phim, 3 La them vao cuoi danh sach): 1

1 Tao danh sach sinh vie

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 3

Trang 21

Thém sau vị trí nhập từ bàn phím:

1 Tao danh sach sinh vie

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 2

Nhap MaSV: 125

Nhap ten SV: Tan

Nhap lop: 12t3

Nhap diem cuoi ky: 5

Nhap vi tri can them (1 la dau danh sach, 2 la them vao sau vi tri nhap tu ban phim, 3 la them vao cuoi danh sach): 2 Nhap vi tri can them vao sau: 2

= === MENU ==:

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 3

Trang 22

Thêm cuôi:

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

Thoat chuong trinh

Nhap diem cuoi ky: 2

Nhap vi tri can them (1 La dau danh sach, 2 La them vao sau vi tri nhap tu ban phim, 3 La them vao cuoi danh sach): 3

===: = MEN

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Trang 23

3) Xem danh sách sinh viên, trình bày dưới dạng các cột

===- RE ===E======

Tao danh sach sinh vien

Them sinh vien vao danh sach

Xem danh sach sinh vien

Sua ten sinh vien

Xoa sinh vien

Tim kiem sinh vien theo ma

Sap xep danh sach

Xoa toan bo danh sach

Thoat chuong trinh

Nhap Lua chon: 3

Trang 24

4) Sửa lại Tên sinh viên khi nhập vào vị trí cần chính sửa

=== -_

Tao danh sach sinh vien

Them sinh vien vao danh sach

Xem danh sach sinh vien

Sua ten sinh vien

Xoa sinh vien

Tim kiem sinh vien theo ma

Sap xep danh sach

Xoa toan bo danh sach

Thoat chuong trinh

Nhap lua chon: 4

Nhap vi tri sinh vien can sua: 1

Nhap ten moi: Tho Khang

Da cap nhat ten sinh vien

_—————

Tao danh sach sinh vien

Them sinh vien vao danh sach

Xem danh sach sinh vien

Sua ten sinh vien

Xoa sinh vien

Tim kiem sinh vien theo ma

Sap xep danh sach

Xoa toan bo danh sach

Thoat chuong trinh

Trang 25

5) X6a 1 sinh viên: dựa vào vị trí nhập (tương tự như thêm)

Xóa đầu(Xóa Khang):

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 5

Da xoa sinh vien o vi tri dau danh sach

a |(,|3'[Í =—= —=-_—=—

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Trang 26

Xóa sau vị trí nhập từ bàn phím(Xóa Tân):

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim hiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap tua chon: 5

Chon thao tac xoa (1: Xoa dau danh sach, 2: Xoa sau vỉ tri, 3: Xoa cuoi danh sach): 2 Nhap vi tri sinh vien ma ban muon xoa sau: 1

Da xoa sinh vien sau vi tri 1

==== MENU ==

- Tao danh sach sinh vien

Them sinh vien vao danh sach

Xem danh sach sinh vien

Sua ten sinh vien

Xoa sinh vien

Tim kiem sinh vien theo ma

Sap xep danh sach

Xoa toan bo danh sach

Thoat chuong trinh

Nhap lua chon: 3

Trang 27

Xóa cuối(Xóa Nhân):

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 5

Chon thao tac xoa (1: Xoa dau danh sach, 2: Xoa sau vi tri, 3: Xoa cuoi danh sach): 3

Da xoa sinh vien o vi tri cuoi danh sach

========== MENU ==

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6

7

9

- Tim kiem sinh vien theo ma

Sap xep danh sach

Xoa toan bo danh sach

Thoat chuong trinh

Nhap tua chon: 3

Trang 28

6) Tìm kiêm 1 sinh viên theo mã sinh viên

Tao danh sach sinh vien

Them sinh vien vao danh sach

danh sach sinh vien

ten sinh vien

sinh vien

kiem sinh vien theo ma

xep danh sach

toan bo danh sach

Thoat chuong trinh

Nhap Lua chon: 3

Tao danh sach sinh vien

Them sinh vien vao danh sach

danh sach sinh vien

ten sinh vien

sinh vien

kiem sinh vien theo ma

xep danh sach

toan bo danh sach

Thoat chuong trinh

Nhap lua chon: 6

Nhap ma sinh vien can tim: 2305

Tim thay sinh vien:

Trang 29

7) Sắp xếp theo mã sinh viên tăng dần và giảm dần khi thông báo người dùng chọn lựa cách sắp xếp

Tao danh sach sinh vien

Them sinh vien vao danh

danh sach sinh vien

ten sinh vien

sinh vien

kiem sinh vien theo ma

xep danh sach

toan bo danh sach

Thoat chuong trinh

Nhap Lua chon: 7

sach

Chon cach sap xep (1: Tang dan, 0: Giam dan): 1

Da sap xep danh sach

Tao danh sach sinh vien

Them sinh vien vao danh sach

danh sach sinh vien

ten sinh vien

sinh vien

kiem sinh vien theo ma

xep danh sach

toan bo danh sach

Thoat chuong trinh

Nhap lua chon: 3

| Ma sinh vien | Ten sinh vien | Lop | DCK |

Trang 30

Tao danh sach sinh vien

Them sinh vien vao danh sach

danh sach sinh vien

ten sinh vien

kiem sinh vien theo ma

xep danh sach

toan bo danh sach

Thoat chuong trinh

Nhap lua chon: 7

Chon cach sap xep (1: Tang

Da sap xep danh sach

Tao danh sach sinh vien

Them sinh vien vao danh sach

danh sach sinh vien

ten sinh vien

kiem sinh vien theo ma

xep danh sach

toan bo danh sach

Thoat chuong trinh

Nhap Lua chon: 3

dan, 9: Giam dan): 9

| Ma sinh vien | Ten sinh vien | Lop | DCH

Trang 31

8) Xóa toàn bộ danh sách

Tao danh sach sinh vien

Them sinh vien vao danh sach

Xem danh sach sinh vien

Sua ten sinh vien

Xoa sinh vien

Tim kiem sinh vien theo ma

Sap xep danh sach

Xoa toan bo danh sach

Thoat chuong trinh

Nhap tua chon: 1

Nhap MaSV (nhap © de dung): 131

Nhap ten SV: Ta

Nhap lop: 123

Nhap diem cuoi ky: 213

Nhap MaSV (nhap © de dung): 0

= A

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 8

Da xoa toan bo danh sach

|

1 Tao danh sach sinh vien

2 Them sinh vien vao danh sach

3 Xem danh sach sinh vien

4 Sua ten sinh vien

5 Xoa sinh vien

6 Tim kiem sinh vien theo ma

7 Sap xep danh sach

8 Xoa toan bo danh sach

9 Thoat chuong trinh

Nhap lua chon: 3

Danh sach rong

Bài 2: Viết chương trình cài đặt các phương pháp sắp xếp Shell Sort, Heap Sort, Merge Sort 4p dung cho máng các số nguyên được nhập từ bàn phím

Bài Làm

#include<stdio.h>

void inputArray(int arr[], int *size) {

Trang 32

printf("Nhap so luong phan tu: ");

scanf("%d", size);

for (int i = 0; i < *size; i++) {

printf("Nhap phan tu thu %d: ", i + 1); scanf("%d", &arr[i]);

void printArray(int arr[], int size) {

printf("Danh sach la:\n");

for (int i = 0; i < size; i++) {

printf("%d ", arr[i]);

}

printf("\n");

void shellSort(int arr[], int size) {

int gap = size / 2;

while (gap > 0) {

for (int i = gap; i < size; i++) {

int temp = arr[i];

int j =i;

while (j >= gap && arr[j tf gap] > temp) {

arr[j] = arr[j tf gap];

Trang 33

j tf= gap;

arr[j] = temp;

gap /= 2;

void merge(int arr[], int left, int mid, int right) {

int ni = mid tf left + 1;

int n2 = right tf mid;

int leftArr[n1], rightArr[n2];

for (int i = 0; i < n1; i++) {

leftArr[i] = arr[left + i];

Trang 35

mergeSort(arr, mid + 1, right); merge(arr, left, mid, right);

void swap(int *a, int *b) {

int temp = *a;

+4 = *b;

*b =temp;

void heapify(int arr[], int size, int root) {

int largest = root;

int left = 2 * root + 1;

int right = 2 * root + 2;

if (left < size && arr[left] > arr[largest]) {

Trang 36

void heapSort(int arr[], int size) {

for (int i = size / 2 tf 1; i >=; itftf) {

heapify(arr, size, i);

printf("2 In danh sach\n");

printf("3 Shell Sort\n");

printf("4 Heap Sort\n");

printf("5 Merge Sort\n");

printf("6 Thoat chuong trinh\n");

Trang 37

printf("tftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftf` printf("Nhap lua chon: ");

Trang 39

Nhap Lua chon: 1

Nhap so Luong phan tu: 5

Nhap phan tu thu 1:

Nhap phan tu thu 2:

Nhap phan tu thu 3:

Nhap phan tu thu 4:

Nhap phan tu thu 5: WNOA

Nhap Lua chon: 3

Danh sach da sap xep (Shell Sort):

Danh sach la:

12356

Ngày đăng: 06/01/2025, 22:05

TỪ KHÓA LIÊN QUAN