Tải bản đầy đủ (.doc) (22 trang)

Đồ án cấu trúc dữ liệu giải thuật tên đề tài đề tài số 01

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (400.87 KB, 22 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI
THUẬT

ĐỀ TÀI SỐ 01
Sinh viên thực hiện : Nguyễn Ngọc Thương
Trương Vũ Thùy Trang
Lớp : 10T1LT
GVHD : Thầy Phan Chí Tùng
Đà Nẵng tháng 5/2011
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
LỜI CẢM ƠN
Chúng em xin chân thành cám ơn thầy Phan Chí Tùng đã tận tình hướng
dẫn và giúp đỡ chúng em trong quá trình thực hiện đề tài này.
Chúng em xin cám ơn các bạn trong và ngoài lớp đã động viên, đóng
góp ý kiến và hỗ trợ chúng em trong quá trình thực hiện đồ án.
Tuy nhiên do kinh nghiệm còn hạn chế và thời gian có hạn nên còn có
nhiều thiếu sót rất mong được sự thông cảm và đóng góp ý kiến của quý thầy cô
và các bạn.
Chúng em xin chân thành cám ơn!
Đà Nẵng, tháng 5 năm 2011
Sinh viên thực hiện
Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN






























SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN






























SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
MỤC LỤC
I.2.1. Các nút 7
I.2.2. Nút gốc 7
I.2.3. Các nút lá 8
I.2.4. Các nút trong 8
I.2.5. Cây con 8
I.4. Các phương pháp duyệt cây 9
CHƯƠNG I
GIỚI THIỆU ĐỀ TÀI
Gia phả là cách ghi chép tên tuổi, tiểu sử, phần mộ, ngày giỗ của từng người
trong gia tộc, theo thứ tự các đời. Gia phả đã xuất hiện từ thời xa xưa ở phương Tây
cũng như ở phương Đông. Nội dung của gia phả thường gồm hai phần: phần đầu ghi
chép nguồn gốc của dòng họ, đó là phần phả kí. Tiếp theo là phần tộc hệ, lần lượt ghi
chép tên huý (tên tự, tên hiệu), ngày tháng năm sinh, năm mất, chức tước, phần mộ,
ngày giỗ của từng người trong họ. Ngoài ra, còn có phần kỉ sự, ghi chép sự nghiệp,
công trạng của ông tổ các đời. Để thấy rõ một cách tổng quát các chi lớn, nhỏ, xa, gần
của một họ, người ta còn lập ra các phả đồ, với những hình vẽ đơn giản kèm theo tên
tuổi ghi vắn tắt ở bên dưới.
Trong phạm vi đồ án này, chúng em xin xây dựng một chương trình nhỏ
để lưu trữ và hiển thị một cây gia phả đơn giản được biểu diễn dưới cấu trúc cây gồm
các chức năng:
+ Nhập một cây gia phả từ bàn phím.
+ Hiển thị cây gia phả lên màn hình.
+ Tìm kiếm một thành viên trong gia phả và hiển thị họ tên, ngày
tháng năm sinh và tình trạng gia đình của con cháu, những người ngang hàng với
người tìm thấy, và in ra gia phả của người này.
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang

Lớp: 10TLT
TRẦN VĂN A
TRẦN VĂN B TRẦN THỊ C
TRẦN VĂN D TRẦN THỊ E HỒ VĂN F HỒ THỊ G HỒ VĂN H
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
CHƯƠNG 2
CẤU TRÚC DỮ LIỆU YÊU CẦU
I. Cấu trúc dữ liệu
- Để giải quyết bài toán lưu trữ một cây gia phả của một dòng họ gồm các thông
tin : họ và tên, ngày tháng năm sinh và tình trạng gia đình (có hoặc chưa có gia đình)
của từng thành viên ta có thể sử dụng cấu trúc cây n phân để lưu trữ.
- Đối với kiểu cấu trúc này, rất phù hợp để biểu diễn sơ đồ phả hệ của dòng họ
một cách minh bạch, rõ ràng trong tìm kiếm và thích hợp trong lưu trữ. Điều khó khăn
ở đây là bậc của cây phụ thuộc vào số con lớn nhất của một thành viên trong gia tộc, vì
thế khó có thể xác định trước được n trong lý thuyết.
- Với gốc cây lưu trữ thông tin của ông tổ của dòng họ, các nhánh con là thông
tin của các thành viên ở các đời tiếp theo.
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hình 1: Sơ đồ cây lưu giữ một gia phả.
I.1. Giới thiệu sơ lược cấu trúc cây
Trong khoa học máy tính, cây là một cấu trúc dữ liệu được sử dụng rộng rãi
gồm một tập hợp các nút (tiếng Anh: node) được liên kết với nhau theo quan hệ cha-
con. Cây trong cấu trúc dữ liệu đầu tiên là mô phỏng (hay nói cách khác là sự sao
chép) của cây (có gốc) trong lý thuyết đồ thị. Hầu như mọi khái niệm trong cây của lý
thuyết đồ thị đều được thể hiện trong cấu trúc dữ liệu. Tuy nhiên cây trong cấu trúc dữ
liệu đã tìm được ứng dụng phong phú và hiệu quả trong nhiều giải thuật. Khi phân tích
các giải thuật trên cấu trúc dữ liệu cây, người ta vẫn thường vẽ ra các cây tương ứng
trong lý thuyết đồ thị.

Hình 2: Cây nhị phân
I.2. Các khái niệm trong cây
I.2.1. Các nút
Một nút có thể chứa một giá trị, một điều kiện, một cấu trúc dữ liệu riêng biệt
hoặc chính một cây. Mỗi nút trong một cây có thể không có hoặc có một số nút con,
các nút con có mức cao hơn nó (theo quy ước khác với cây tự nhiên, cây trong cấu trúc
dữ liệu phát triển từ trên xuống). Một nút có con được gọi là nút cha của các nút con.
Một nút có nhiều nhất một nút cha.
I.2.2. Nút gốc
Trong mỗi cây có một nút đặc biệt được gọi là nút gốc (hay nói đơn giản
là gốc). Nút gốc là nút duy nhất không có nút cha. Nút gốc là nơi khởi đầu của nhiều
giải thuật trên cây. Tất cả các nút khác được nối về nút gốc bằng một đường đi qua các
cạnh hay các liên kết.
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
I.2.3. Các nút lá
Các nút không có nút con được gọi là nút lá hay gọi đơn giản là lá.
I.2.4. Các nút trong
Nút trong của một cây là nút trên cây có ít nhất một con, nghĩa là các nút không
phải là lá. Các khái niệm về mức của mỗi nút, chiều cao của cây được định nghĩa
giống như cây trong lý thuyết đồ thị.
I.2.5. Cây con
Một cây con là một bộ phận của cấu trúc dữ liệu cây mà tự nó cũng là một cây.
Một nút bất kỳ trong cây T, cùng với các nút dưới nó tạo thành một cây con của T.
I.3. Biểu diễn cây
Có nhiều phương pháp biểu diễn cây. Cách thường dùng nhất là biểu diễn mỗi
nút như một dữ liệu kiểu bản ghi, mỗi nút chứa các con trỏ tới các con hoặc cha của
nó, hoặc cả hai. Cây cũng có thể biểu diễn bằng các mảng cùng với quan hệ giữa các
vị trí trong mảng.

I.3.1. Biểu diễn bằng các nút với các con trỏ
Mỗi nút là một dữ liệu kiểu bản ghi với ba trường: Một trường thường gọi là
INFOR, chứa thông tin lưu trữ tại nút đó. Thông tin này có thể chỉ là một số, một ký
tự, cũng có thể là một tập hợp dữ liệu rất phức tạp. Hai trường LLINK và RLINK chứa
các liên kết trái và phải. Nếu cây là cây nhị phân, LLINK trỏ tới con trái của nút,
RLINK trỏ tới con phải của nút. Nếu cây là cây tổng quát, LLINK trỏ tới con cực trái
và RLINK trỏ tới em kế cận phải của nút đó. Do đó danh sách các nút biểu diễn một
cây tổng quát, khi được xem là biểu diễn của cây nhị phân sẽ cho một cây nhị phân.
Cây nhị phân này được gọi là cây nhị phân tương đương với cây tổng quát ban đầu.
I.3.2. Biểu diễn cây nhị phân bằng mảng
Cây nhị phân đầy đủ là cây nhị phân, trong đó mỗi nút trong chỉ có hai con. Cây
nhị phân hoàn chỉnh là cây nhị phân đầy đủ, trong đó tất cả các lá đều ở mức cao nhất.
Một cây nhị phân hoàn chỉnh chiều cao h chỉ có 2
h + 1
− 1 nút.
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Do đó người ta có thể dùng một mảng gồm 2
h + 1
− 1 phần tử để biểu diễn cây
hoàn chỉnh, bằng cách lần lượt lưu trữ thông tin của mỗi nút vào mảng theo thứ tự từ
trên xuống dưới, từ trái sang phải. Khi đó con trái của nút thứ i là phần tử thứ 2*i, con
phải là phần tử thứ 2*i+1. Cha của phần tử thứ i là phần tử thứ int(i/2).
Nếu cây là không hoàn chỉnh, ta gán giá trị Null cho các vị trí còn thiếu so với
cây nhị phân hoàn chỉnh. Một cách khác, dùng một mảng hai chiều trong dòng thứ
nhất ghi các thông tin của nút, dòng thứ hai ghi chỉ số của nút cha của nút đó với dấu +
nếu nút hiện tại là con trái, với dấu - nếu nút hiện tại là con phải của nút cha.
I.4. Các phương pháp duyệt cây
Duyệt một cây là một trình tự làm việc với các nút trong cây, trình tự này giống

như một chuyến đi qua các nút trên cây theo các liên kết cha-con. Các giải thuật duyệt
khác nhau về thứ tự “viếng thăm” giữa một nút cha và các nút con. Chúng được gọi
là duỵệt tiền thứ tự, nếu viếng thăm đỉnh cha trước rồi mới đến các con, là duyệt hậu
thứ tự nếu viếng thăm hết các con rồi mới đến cha.
II. Chương trình
II.1. Các thư viện sử dụng trong chương trình
- #include<conio.h> : Thư viện con trỏ màn hình
- #include<string.h> : Thư viện các hàm xử lý xâu chuổi
- #include<stdio.h> : Thư viện các hàm nhập xuất
II.2. Định nghĩa các cấu trúc dữ liệu
Để lưu trữ một gia phả, ta xây dựng một struct giapha để lưu các thông
tin sau:
- Họ tên , ngày tháng năm sinh , gia đình (đã kết hôn hay chưa).
- Số con : cho biết số con của người đó.
- Mức : cho biết thế hệ của người đó tính từ ông trưởng (thế hệ 0).
- Biến con trỏ trỏ tới những người con khai báo thành mảng sub[n]
struct giapha
{
infor ht;
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
int n,t,ns;
int gd,socon,muc;
giapha *sub[50];
};
Để tạo một cây lưu gia phả ta định nghĩa Tree là con trỏ kiểu bản ghi gia phả và
khai báo cây T kiểu Tree.
typedef giapha *Tree;
Tree T;

Như vậy ta đã hoàn thành bước định nghĩa một cây tam phân để lưu dữ liệu của
gia phả
II. 3. Các hàm sử dụng trong chương trình chính
Chương trình bao gồm các hàm sau:
- Tree taogiapha(infor x,int ngay,int thang,int nam,int z,int socon,int Muc):
Hàm này trả vể giá trị là dữ liệu kiểu Tree, nhiệm vụ của hàm này là biến đổi từ thông
tin rời rạc gồm họ tên, ngày sinh , gia đình thành một phần tử kiểu bản ghi giapha.
- void duyet(Tree T,Tree onggia,int *a): Hàm này duyệt cây theo thứ tự trước .
Tức là duyệt theo thứ tự : Gốc  Con1 Con2 Con3. Hàm duyệt qua tất cả các
phần tử của cây và in ra màn hình, hàm sử dụng trong hàm void hienthi(Tree T).
- void hienthi(Tree T): Hàm này để hiển thị toàn bộ cây ra màn hình.
- void Search(Tree T,infor x,Tree &vt ): Hàm này để tìm kiếm Người có tên “ x
“ lưu vào vùng nhớ Tree vt, nghĩa là tìm kiếm người đó và thông tin con cháu người
đó.
- void SearchMuc(Tree T,int Muc,Tree vt): Hàm này để tìm thông tin tất cả
những người cùng thế hệ với người này.
- void nhapnguoi(Tree &T): Hàm này để nhập thông tin của một người vào gia
phả từ bàn phím, gồm có : Họ tên , Ngày sinh , Gia đình ,Người sinh thành (cha).
- void hienthitimnguoi(): Hàm này hiển thị tất cả thông tin của những người
cùng thế hệ.
II.4. Hình ảnh chạy chương trình
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Hình 3. Menu của chương trình chính
Hình 4. Nhập thông tin một người vào gia phả
Hình 5. Sơ đồ cây gia phả của chương trình
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT

Hình 6. Tìm kiếm thông tin một người trong gia phả
II.5. Mã nguồn chương trình
#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef char infor[20];
struct giapha
{
infor ht;
int n,t,ns;
int gd,socon,muc;
giapha *sub[50];
};
typedef giapha *Tree;
Tree T;
infor x,a;
int ngay,thang,nam;
int z,boqua;
Tree u,vt;
int Muc,i,socon;
Tree taogiapha(infor x,int ngay,int thang,int nam,int z,int socon,int Muc)
{
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Tree p,sub[20];
p=new giapha;
strcpy((*p).ht,x);
(*p).n = ngay;
(*p).t = thang;

(*p).ns = nam;
(*p).gd = z;
(*p).socon=socon;
if(socon)
{
int i;
for(i=1;i<=socon;i++)
(*p).sub[i]=NULL;
}
(*p).muc=Muc;
return p;
}
void duyet(Tree T,Tree cha,int *a)
{
int Muc1,j;
Muc1=*a;
if(T!=NULL)
{
cha=T;
j= (*T).muc;
switch(j)
{
case 0:
gotoxy(33,3);
printf("%s",(*T).ht);
gotoxy(34,4);
printf("(%d/%d/%d)",(*T).n,(*T).t,(*T).ns);
break;
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT

ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
case 1:
gotoxy(16+Muc1,8);
printf("%s",(*T).ht);
gotoxy(17+Muc1,9);
printf("(%d/%d/%d)",(*T).n,(*T).t,(*T).ns);
break;
case 2:
gotoxy(11+Muc1,13);
printf("%s",(*T).ht);
gotoxy(12+Muc1,14);
printf("(%d/%d/%d)",(*T).n,(*T).t,(*T).ns);
break;
case 3:
gotoxy(5+Muc1,19);
printf("%s",(*T).ht);
gotoxy(6+Muc1,20);
printf("(%d/%d/%d)",(*T).n,(*T).t,(*T).ns);
break;
case 4:
gotoxy(1+Muc1,24);
printf("%s",(*T).ht);
gotoxy(2+Muc1,25);
printf("(%d/%d/%d)",(*T).n,(*T).t,(*T).ns);
break;
}
for(int i=1;i<=(*T).socon;i++)
duyet((*T).sub[i],cha,&Muc1);
Muc1++;
}

*a=Muc1;
void hienthi(Tree T, int Muc1)
{
gotoxy(29,2);printf("*****CAY GIA PHA*****");
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Tree cha=NULL;
duyet(T,cha,&Muc1);
}
void Search(Tree T,infor x,Tree &vt )
{
if(T!=NULL)
{
if(strcmp((*T).ht,x)==0) vt=T;
else
{
for(int i=1;i<=(*T).socon;i++)
Search((*T).sub[i],x,vt);
}
}
}
void SearchMuc(Tree T,int Muc,Tree vt)
{
if(T!=NULL)
{
if(((*T).muc==Muc)&&(T!=vt))
{
printf("\n\t\tTen: %s - Nam sinh: %d/%d/%d",(*T).ht,(*T).n,(*T).t,(*T).ns);
if((*T).gd==1) printf("\t - Da ket hon");

else printf("\t - Chua ket hon");
}
else
{
for(int i=1;i<=(*T).socon;i++)
SearchMuc((*T).sub[i],Muc,vt);
}
}
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
void nhapnguoi(Tree &T)
{
clrscr();
nhap:
fflush(stdin);
printf("\n Nhap ten: ");
gets(x);
vt=NULL;
Search(T,x,vt);
if(vt!=NULL)
{
printf("\n Nguoi nay da co trong gia pha.\n Nhap lai (An phim 1) - Bo qua (An
phim 0): ");
scanf("%d",&boqua);
if(boqua) goto nhap;
else goto boqua;
}
if(T!=NULL)
{

lai:
printf("\n Nhap ten bo(me) cua nguoi do : ");
fflush(stdin);
gets(a);
vt=NULL;
Search(T,a,vt);
if(vt==NULL)
{
printf("\n Khong tim thay ten nay.Vui long nhap lai.");
printf("\n Nhap lai (An phim 1) - Bo qua (An phim 0): ");
scanf("%d",&boqua);
if (boqua) goto lai;
else goto boqua;
}
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
else if ((*vt).gd==0)
{
printf("\n Nguoi nay chua ket hon nen chua co con.");
printf("\n Nhap lai (An phim 1) - Bo qua (An phim 0): ");
scanf("%d",&boqua);
if (boqua) goto lai;
else goto boqua;
}
int i=1;
while((((*vt).sub[i])!=NULL)&&(i<=(*vt).socon))
i++;
if(i>(*vt).socon)
{

printf("\n Nguoi nay chi co %d con, ko the them nua.",(*vt).socon);
printf("\n Nhap lai (An phim 1) - Bo qua (An phim 0): ");
scanf("%d",&boqua);
if(boqua) goto lai;
else goto boqua;
}
}
do
{
printf("\n Ngay sinh (1-31): ");
scanf("%d",&ngay);
}
while (ngay<=0 || ngay>31);
do
{
printf("\n Thang sinh (1-12): ");
scanf("%d",&thang);
}
while (thang<=0 || thang > 12);
nhapnam:
do
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
{
printf("\n Nam sinh(1900 - 2011): ");
scanf("%d",&nam);
}
while (nam<1900 || nam>2011);
if(T!=NULL)

{
if(nam <= (*vt).ns)
{
printf ("\n Bo (me) cua %s la %s sinh nam %d, nam sinh cua %s phai lon hon
%d",x,(*vt).ht,(*vt).ns,x,(*vt).ns);
goto nhapnam;
}
}
if(T!=NULL)
{
printf("\n Tinh trang gia dinh 1-Kethon / 0-Chuakethon :");
scanf("%d",&z);
}
else z=1;
if(z!=0)
{
printf("\n Nhap so con: ");
scanf("%d",&socon);
}
else socon=0;
if(T==NULL)
{
Muc=0;
T = taogiapha(x,ngay,thang,nam,z,socon,Muc);
printf("\n Them thong tin vao gia pha thanh cong.");
getch();
}
else
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT

ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
{
i=1;
while((((*vt).sub[i])!=NULL)&&(i<=(*vt).socon))
i++;
if(!(i>(*vt).socon))
{
Muc=(*vt).muc+1;
u=taogiapha(x,ngay,thang,nam,z,socon,Muc);
(*vt).sub[i]=u;
printf("\n Them thong tin vao gia pha thanh cong.");
getch();
}
}
boqua:
}
void hienthitimnguoi()
{
fflush(stdin);
printf("\n Nhap ten nguoi ban muon tim: ");
gets(x);
vt=NULL;
Search(T,x,vt);
if(vt==NULL)
{
printf("\n Khong tim thay %s trong gia pha",x);
getch();
}
else
{

printf("\n Cac thong tin cua %s",x);
printf("\n\t - Tinh trang hon nhan cua nguoi nay: ");
if((*vt).gd) printf("Da ket hon");
else printf("Chua ket hon");
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
if((*vt).socon)
{
printf("\n\t - Thong tin ve con cai:");
for(int k=1;k<=(*vt).socon;k++)
if((*vt).sub[k]!=NULL)
printf("\n\t\t + Ten con: %s - Nam sinh: %d/%d/%d", (*((*vt).sub[k])).ht,
(*((*vt).sub[k])).n,(*((*vt).sub[k])).t,(*((*vt).sub[k])).ns);
}
else printf("\n\t\tNguoi nay khong co con");
printf("\n\t - Nhung nguoi cung the he trong gia pha:");
SearchMuc(T,(*vt).muc,vt);
getch();
clrscr();
printf("\n Cay gia pha cua %s:",x);
hienthi(vt,0);
}
}
void thongtinnhom(){
printf("\n");
printf("\n**********************************************************");
printf("\n * *");
printf("\n * THONG TIN NHOM *");
printf("\n * Ho va ten Lop *");

printf("\n * *");
printf("\n * 1. Truong Vu Thuy Trang 10T1LT *");
printf("\n * 2. Nguyen Ngoc Thuong 10T1LT *");
printf("\n * *");
printf("\n***********************************************************");
}
void main()
{
clrscr();
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
int i,cv;
T=NULL;
do {
nhap:
clrscr();
printf("\n");
printf("\n *************** DO AN MON CAU TRUC DU LIEU
****************");
printf("\n * ****** *");
printf("\n * THEM MOT NGUOI VAO GIA PHA : An phim 1 *");
printf("\n * HIEN THI CAY GIA PHA : An phim 2 *");
printf("\n * TIM MOT NGUOI TRONG GIA PHA : An phim 3 *");
printf("\n * XEM THONG TIN NHOM THUC HIEN : An phim 4 *");
printf("\n * THOAT CHUONG TRINH : An phim 0 *");
printf("\n**********************************************************");
printf("\n\n VUI LONG CHON CONG VIEC: ");
scanf("%d",&cv);
switch(cv)

{
case 1:
nhapnguoi(T);
break;
case 2:
clrscr();
hienthi(T,0);
getch();
break;
case 3:
clrscr();
hienthitimnguoi();
getch();
break;
case 4:
thongtinnhom();
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT
ĐỒ ÁN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
getch();
}
}
while(cv!=0);
}
SVTH: Nguyễn Ngọc Thương – Trương Vũ Thùy Trang
Lớp: 10TLT

×