1. Trang chủ
  2. » Giáo án - Bài giảng

Thực hành cấu trúc dữ liệu và giải thuật 1

48 3 0

Đ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 1
Trường học Hutech University
Chuyên ngành Cấu Trúc Dữ Liệu Và Giải Thuật
Thể loại Tài Liệu Học Tập
Năm xuất bản 2019
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 48
Dung lượng 1,19 MB

Nội dung

thì màn hình.. node trên cây.

Trang 1

Biên

www.hutech.edu.vn

Trang 2

*1.2019.COS321*

tailieuhoctap@hutech.edu.vn

Trang 3

I III

1

1.1 TÓM LÝ 1

1

1

1.2 HÀNH 2

2

3

1.3 HÀNH NÂNG CAO 6

7

2.1 TÓM LÝ 7

7

7

2.2 HÀNH 7

7

9

2.3 HÀNH NÂNG CAO 10

SÁCH DANH S 11

3.1 TÓM LÝ 11

11

12

3.2 HÀNH 13

13

17

3.3 HÀNH NÂNG CAO 19

E VÀ STACK 20

4.1 TÓM LÝ 20

20

4.1.2 Queue (h i) 20

4.2 HÀNH 21

21

23

24

5.1 TÓM LÝ 24

24

5.1.2 Các thao tác 25

Trang 4

5.2 HÀNH 25

5 25

27

30

6.1 TÓM LÝ 30

30

31

32

6.2 HÀNH 32

6.3 TRA HÀNH 41

TÀI THAM 42

Trang 5

M

h nâng cao

- Các gi i thu t tìm ki m và s p x p trên danh sách

tr ng vào ki u d li u danh sách liên k t

- C u trúc d li u Stack và m t s bài toán ng d ng th c t c a Stack

- C u trúc d li u Queue và m t s bài toán ng d ng th c t c a Queue

- C u trúc d li u cây: cây nh phân, cây nh phân tìm ki m, cây nh phân tìm ki m cân b ng

Trang 6

- m thi: 50% Hình th c bài thi th c hành N i dung g m các bài t p liên quan

Trang 7

này là khóa (key)

- Tìm ki m tu n t (tuy n tính) trên t p d li u b t k

Trang 9

BÀI 1: 3

}

// -

int TimTuyenTinh(int a[], int n, int X){ }

void SapXep(int a[], int n){ }

int TimNhiPhan(int a[], int n, int X){ }

if (vt==-1) printf("Khong tim thay");

else printf("Tim thay %d tai vi tri %d",X, vt);

X

sapxep(a,n);

printf("Mang sau khi sap tang dan:"); XuatMang(a,n);

printf("Nhap gia tri can tim: "); scanf("%d", &X);

Trang 10

void nhapn(int &n)

void nhapDS(Sach a[], int n)

void xuatDS(Sach a[], int n)

int timTuanTu(Sach a[], int n, int X)

int timNhiPhan(Sach a[], int n, int X)

- Hàm nh p 1 cu n sách: nh p thông tin cho 1 cu n sách

void nhap1Sach(Sach &x)

- Hàm xu t 1 cu n sách: xu t thông tin c a 1 cu n sách

void xuat1Sach(Sach x)

Trang 11

- Hàm tìm cu n sách mã là X: Làm theo hai cách tìm tuy n tính và nh phân

int timTuanTu(Sach a[], int n, int X)

int timNhiPhan(Sach a[], int n, int X)

hàm tìm)

- Hàm xu t ra các cu n sách có tên là Y: Duy t danh sách, n u g p cu n nào có

- Hàm tìm cu n sách giá l n nh t:

Trang 14

c

d

- Sinh m ng: s d ng n <stdlib.h> và <string.h>

void SinhMang (int a[], int n)

printf 3: Interchange Sort\n

Trang 17

DSLK VÒNG

Trang 18

3.1.2 C u trúc danh sách liên k

a

- Ph n ch a d li u Info (ho c Data)

- Ph n ch v trí ( a ch ) c a ph n t ti p theo trong danh sách Next

Trang 20

typedef struct node Node;

- Vì danh sách có m i ph n t là m t s nguyên nên ki u d li u c a info là int

void init (Node* &phead)

g: int isEmpty(Node* phead) Node* createNode(int x)

void insertFirst(Node* &phead, int x)

void insertLast(Node* &phead, int x)

void showList(Node* phead)

printf("Nhap so luong phan tu: "); scanf("%d", &n);

for(int i=0; i<n; i++)

Trang 21

BÀI 3: 15

qu và cho nh n xét

insertLast(phead, x), ch y th v i n=3, thêm l t x= 1, x=2, và x=3 Quan sát k t qu và cho nh n xét

Trang 22

system(cls);

Trang 24

typedef struct node Node;

là m t sinh viên nên ki u d li u c a info là SV)

nhap1SV(SV &x)

xuat1SV(SV x)

: void init (Node* &phead)

int isEmpty(Node* phead)

Node* createNode(SV x)

void insertFirst(Node* &phead, SV x)

void insertLast(Node* &phead, SV x)

- Nh p danh sách sinh viên theo cách 1:

void inputList(Node* &phead)

{

int n;

printf("Nhap so luong sinh vien:"); scanf("%d", &n);

for(int i=0; i<n; i++)

Trang 25

BÀI 3: DANH SÁCH LIÊ 19

3.3 TH C HÀNH NÂNG CAO

:

- Xóa m t sinh viên sau sinh viên có mã là X

- Xóa t t c các sinh viên có tên là X

nguyên

Bài 2:

Trang 26

Stack Trên Stack các Stack

Out)

Hai thao tác chính trên Stack:

trúc FIFO (First In First Out) Hai thao tác chính trên hàng :

- insert thêm nút m i vào cu i hàng i

Trang 27

typedef struct node

{

struct node * next;

}Node;

typedef Node* STACK;

Trang 28

o void Push(STACK &s, DataType x)

s

void Convert(int n, Stack &s){

void Output(Stack s){

{

; }

Trang 29

ch

Trang 31

BÀI 5: 25

:

- Giá tr c a t t c nút con trái < giá tr c

- Giá tr c a t t c nút con ph i > giá tr c

typedef struct node

{

int info;

Trang 32

struct node * left;

struct node * right;

} Node;

- Bi n qu n lý cây: Node* proot; //pTree gi nút g c c a cây

void CreateTree(Node* & proot, int a[], int begin, int end ) {

CreateTree(proot ->left, a, begin, i-1);

CreateTree(proot ->right, a, i+1, end);

}

//trong hàm main() : begin=0, end=n-1 ;

Trang 33

struct node *left;

struct node *right;

}Node;

void Init(Node* &proot){ proot=NULL ;}

Node* CreateNode(int x){

NODEPTR p=new Node;

p->info=x; p->left=NULL; p->right=NULL;

Trang 34

rp = rp->left; //rp qua bên trái

khi rp là nút có nút con trái là null p->info = rp-

Trang 35

BÀI 5: 29

c

Trang 37

BÀI 6: 31

- Tác v tìm ki m: y là m t trong nh ng tác v th ng c s d ng nh t c a

b ng b m Tác v này s tìm ki m các ph n t trong b ng b m d a vào khoá c a

t ng ph n t

- Tác v thêm m t ph n t :Tác v này thêm m t ph n t m i vào b ng b m

ch khác nhau, nh ng th c t thì th ng x y ra tr ng h các khoá khác nhau l

- B v ng pháp n i k t tr c ti p: m i a ch c a b ng b m t ng ng

v i m t danh sách liên k t Các nút b xung t c n i k t v i nhau trên m t danh sách liên k t

k t next

a ch tr ng u tiên thì thêm nút vào a ch này

Trang 38

6.1.3

- Khoá có th là khoá d ng s hay d ng chu i

tìm ki m nút trên b ng b m quy v bài toán tìm ki m trên danh sách liên k t

Trang 40

// khoi tao bang bam

Trang 42

//Ham hash function

int hashfunc(int key){

return (key % M);

}

//them mot node vao dau bucket

void push(int b, int x){

Trang 43

//tac vu them vao bucket mot node moi sau node p

void insafter(NODEPTR p, int k){

// tac vu nay chi su dung khi them vao mot bucket co thu tu

void place(int b, int k){

Trang 45

printf("\n\n CAC CHUC NANG CUA CHUONG TRINH");

printf("\n 1: Them mot node vao bang");

printf("\n 2: Them ngau nhien nhieu node vao bang bam");

printf("\n 3: Xoa mot node trong bang bam");

printf("\n 4: Xoa toan bo bang bam");

Trang 46

printf("\n 5: Duyet bang bam");

printf("\n 6: Tim kiem tren bang bam");

printf("\n 0: ket thuc chuong trinh");

printf("\n chuc nang ban chon: ");

scanf("%d",&chucnang);

switch(chucnang){

case 1:{

printf("\n Them mot node vao trong bang bam");

printf("\n Nhap vao khoa cua node can them vao: ");

scanf("%d",&key);

insert(key);

break;

} case 2:{

printf("\n them mot bang ngau nhien nhieu node vao bang"); printf("\n So node ban muon them: ");

} case 3:{

printf("\n Xoa mot node tren bang bam");

printf("\n Nhap vao khoa cua node can xoa: ");

scanf("%d",&key);

remove(key);

break;

} case 4:{

clear();

Trang 47

BÀI 6: 41

break;

} case 5:{

printf("\n Duyet Bang Bam");

traverse();

break;

} case 6:{

printf("\n Tim kiem mot khoa tren bang bam");

printf("\n Khoa can tim: ");

scanf("%d",key);

b=search(key);

if(b==-1) printf(" Khong thay");

else printf(" Tim thay trong bucket %d",b);

break;

} }

}while(chucnang !=0);

}

6.3 KI M TRA TH C HÀNH

Trang 48

1

2

TPHCM

3 Lê Minh Hoàng (1999 - 2002)

4 Richard Neapolitan and Kumarss (2004) Foundations of Algorithms Using C++ Pseudocode Jones and Bartlett Publishers

5

6

Ngày đăng: 06/02/2024, 09:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN