CNTT2
Mời các bạn đăng kí thành viên để hưởng được những quền lợi từ diễn đàn, và cùng nhau chia sẻ kiến thức ,giao lưu học hỏi.
Nếu bạn đã là thành viên của diễn đàn thì hãy nhấn login để đăng nhập vào diễn đàn.
Cảm ơn các bạn đã tham gia diễn đàn CNTT2-K9





HỆ THỐNG DIỄN ĐÀN CỦA CNTT2K9
IndexIndex  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
Đăng Nhập
Tên truy cập:
Mật khẩu:
Đăng nhập tự động mỗi khi truy cập: 
:: Quên mật khẩu
Xem điểm thi
Các bạn nhập MSSV vào ô bên dưới
Ví dụ như: 09.020.001

Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
Top posters
cutuan527 (1051)
 
caingocthanh (559)
 
holyangell (486)
 
bankimo (381)
 
zailangtu911 (369)
 
nguyenthanhvu (300)
 
dinhhuunho (153)
 
Admin (145)
 
nguyen chi ha (145)
 
zztanzzthanhzz (126)
 
Liên kết
Trường Đại Học Cửu Long
Diễn đàn thầy Pha
Lớp CNTT3-K9
Lớp CNTT1-K9
Lớp CNTT1-K10
Lớp CNTT2-K10
June 2017
SunMonTueWedThuFriSat
    123
45678910
11121314151617
18192021222324
252627282930 
CalendarCalendar
Thắc mắc
Người Quản Trị
Chat
Moderator
Chat
Statistics
Diễn Đàn hiện có 7385 thành viên
Chúng ta cùng chào mừng thành viên mới đăng ký: lanhuong dinh

Tổng số bài viết đã gửi vào diễn đàn là 5059 in 1953 subjects

Share | 
 

 Bài CTDL mới thực hành

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
caingocthanh
Moderators
Moderators
avatar

Nam Tổng số bài gửi : 559
Join date : 27/04/2009
Age : 28
Đến từ : Cà Mau

Bài gửiTiêu đề: Bài CTDL mới thực hành   Sun May 09, 2010 1:59 pm

Ở đây mới chỉ là duyệt cây theo preorder thôi,còn inorder và posorder thì mình sẽ post sau.
Trích dẫn :
#include<conio.h>
#include<stdio.h>
#include<string.h>
#define NIL -1
#define MaxLength 100
typedef int Node;
typedef char DataType;
typedef struct Tree
{
DataType Data[MaxLength];//ham luu tru data
Node Parent[MaxLength]; //ham luu tru parent
int MaxNode; //so nut thuc su trong cay
}
Tree;
Tree T;
//khoi tao cay rong
void MakeNULL_Tree(Tree*T)
{
T->MaxNode=0;
}
//kiem tra cay rong
int Empty_Tree(Tree T)
{
return T.MaxNode==0;
}
void ReadTree(Tree*T)
{
int i;
MakeNULL_Tree(&(*T));
do
{
printf("So nut cua cay la:");
scanf("%d",&(*T).MaxNode);
}
while(((*T).MaxNode<1)||((*T).MaxNode>MaxLength));
printf("Nhap gia tri nut goc");
fflush(stdin);
scanf("%c",&(*T).Data[0]);
(*T).Parent[0]=NIL;
for(i=1;i<=(*T).MaxNode-1;i++)
{
printf("Nhap cha cua nut %d la",i);
scanf("%d",&(*T).Parent[i]);
printf("Nhap gia tri cua nut %d la",i);
fflush(stdin);
scanf("%c",&(*T).Data[i]);
}
}
//xac dinh cha cua nut n tren cay T
Node Parent(Node n,Tree T)
{
if(Empty_Tree(T)||n>T.MaxNode-1)
return NIL;
else
return T.Parent[n];
}
//ham xac dinh gia tri cua nut tren cay T
DataType Data(Node n,Tree T)
{
if(Empty_Tree(T) || n>T.MaxNode-1)
{
printf("Error!\n");
return '*';
}
else
return T.Data[n];
}
//ham lay nut con trai nhat
Node LeftMostChild(Node n,Tree T)
{
if(n<0||Empty_Tree(T)||n>=T.MaxNode-1)
{
return NIL;
}
else
{
Node i=n+1;
while(i<T.MaxNode)
{
if(T.Parent[i]==n)
return i;
else
i++;
}
return NIL;
}
}
//ham lay anh em ruot phai cua nut n trong cay
Node RightSibling(Node n,Tree T)
{
if(n<0)
return NIL;
Node i=n+1;
while(i<T.MaxNode)
{
if(T.Parent[n]==T.Parent[i])
return i;
else
i++;
}
return NIL;
}
//ham xac dinh nut doc cua cay
Node Root(Tree T)
{
if(!Empty_Tree(T))
return 0;
else
return NIL;
}
//ham duyet tien tu cay
void Preorder(Node n,Tree T)
{
Node i;
printf("%c",Data(n,T));
i=LeftMostChild(n,T);
while(i!=NIL)
{
Preorder(i,T);
i=RightSibling(i,T);
}
}
void main()
{ clrscr();
Tree T;
printf("Bat dau nhap du lieu cho cay tong quat:\n");
ReadTree(&T);
printf("Danh sach duyet tien tu cua cay vua nhap la:");
Preorder(Root(T),T);
printf("Danh sach duyet trung tu cua cay la:");
getch();
}
04 04 04
Về Đầu Trang Go down
Xem lý lịch thành viên http://thanhkim.tk
vo minh phuc
Ký Danh
Ký Danh
avatar

Nam Tổng số bài gửi : 5
Join date : 27/03/2010
Age : 27

Bài gửiTiêu đề: Re: Bài CTDL mới thực hành   Wed May 12, 2010 10:14 pm

cám ơn lớp trưỡng....ha..ha.. 14 14 14
Về Đầu Trang Go down
Xem lý lịch thành viên
lethanhthuan
Nhập Môn
Nhập Môn
avatar

Nam Tổng số bài gửi : 31
Join date : 14/05/2009
Age : 28
Đến từ : ĐỒNG THÁP

Bài gửiTiêu đề: Re: Bài CTDL mới thực hành   Thu May 20, 2010 10:42 pm

#include<conio.h>
#include<stdio.h>
#include<string.h>
#define NIL -1
#define MaxLength 100
typedef int Node;
typedef char DataType;
typedef struct Tree
{
DataType Data[MaxLength];//ham luu tru data
Node Parent[MaxLength]; //ham luu tru parent
int MaxNode; //so nut thuc su trong cay
}
Tree;
Tree T;
//khoi tao cay rong
void MakeNULL_Tree(Tree*T)
{
T->MaxNode=0;
}
//kiem tra cay rong
int Empty_Tree(Tree T)
{
return T.MaxNode==0;
}
void ReadTree(Tree*T)
{
int i;
MakeNULL_Tree(&(*T));
do{
printf("So nut cua cay la:");
scanf("%d",&(*T).MaxNode);
}
while(((*T).MaxNode<1)||((*T).MaxNode>MaxLength));
printf("Nhap gia tri nut goc");
fflush(stdin);
scanf("%c",&(*T).Data[0]);
(*T).Parent[0]=NIL;
for(i=1;i<=(*T).MaxNode-1;i++)
{
printf("Nhap cha cua nut %d la",i);
scanf("%d",&(*T).Parent[i]);
printf("Nhap gia tri cua nut %d la",i);
fflush(stdin);
scanf("%c",&(*T).Data[i]);
}
}
//xac dinh cha cua nut n tren cay T
Node Parent(Node n,Tree T)
{
if(Empty_Tree(T)||n>T.MaxNode-1)
return NIL;
else
return T.Parent[n];
}
//ham xac dinh gia tri cua nut tren cay T
DataType Data(Node n,Tree T)
{
if(Empty_Tree(T) || n>T.MaxNode-1)
{
printf("Error!\n");
return '*';
}
else
return T.Data[n];
}
//ham lay nut con trai nhat
Node LeftMostChild(Node n,Tree T)
{
if(n<0||Empty_Tree(T)||n>=T.MaxNode-1)
{
return NIL;
}
else
{
Node i=n+1;
while(i<T.MaxNode)
{
if(T.Parent[i]==n)
return i;
else
i++;
}
return NIL;
}
}
//ham lay anh em ruot phai cua nut n trong cay
Node RightSibling(Node n,Tree T)
{
if(n<0)
return NIL;
Node i=n+1;
while(i<T.MaxNode)
{
if(T.Parent[n]==T.Parent[i])
return i;
else
i++;
}
return NIL;
}
//ham xac dinh nut doc cua cay
Node Root(Tree T)
{
if(!Empty_Tree(T))
return 0;
else
return NIL;
}
//ham duyet tien tu cay
void Preorder(Node n,Tree T)
{
Node i;
printf("%c",Data(n,T));
i=LeftMostChild(n,T);
while(i!=NIL)
{
Preorder(i,T);
i=RightSibling(i,T);
}
}
int baccuacay(tree T)
{
int max=MIL;
(for(int i=0;i<T.MaxNode;i++)
{
int temp=0;
for(int j=0;j<T.MaxNode;j++)
{
if(T.Parent[j]==i)
temp++;
}
if(max<temp)
max=temp;
}
return max;
}
int chieucaocay(Node n,Tree T)
{
if(LeftMostChild(n,T)==NIL)
return 0;
int temp=0;
Node i=LeftMostChild(n,T) ;
while(i!=NIL)
{
if(temp<chieucaocay(i,T))
temp=chieucaocay(i,T);
i=RightSibling(i,T);
}
temp++;
return temp ;
}


void main()
{ clrscr();
Tree T;
printf("Bat dau nhap du lieu cho cay tong quat:\n");
ReadTree(&T);
printf("Danh sach duyet tien tu cua cay vua nhap la:");
Preorder(Root(T),T);
printf("Danh sach duyet trung tu cua cay la:");
printf("bac cua cay la %d =",baccuacay(T));
printf("\n");
printf("chieu cao cua cay la %d ",chieucaocay(Root(T),T));
getch();
}



ham void main()
dung ko may ban
Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




Bài gửiTiêu đề: Re: Bài CTDL mới thực hành   

Về Đầu Trang Go down
 

Bài CTDL mới thực hành

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
CNTT2 :: IT WORLD :: Giáo Trình-Tài Liệu Trực Tuyến-
Free forum | © phpBB | Free forum support | Liên hệ | Report an abuse | Create a blog