c로 쓴 자료구조론 연습문제 5장(트리)
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

c로 쓴 자료구조론 연습문제 5장(트리)에 대한 보고서 자료입니다.

본문내용

sal 이용해서 문자만 출력
level_order(pRoot);
}
//////////////////////////////////////////////////////////////////////////
// 스택에 자료를 삽입
void push( void* stack , int* top , void* item , int data_type)
{
if ( *top > MAX_STACK_SIZE ){
fprintf(stderr , \"트리의 크기가 큽니다.\\n\");
exit(1);
}
// 데이터 타입에 따른 삽입을 달리함
switch(data_type)
{
case TYPE_CHAR:
((char*)stack)[++(*top)] = *(char*)item;
break;
case TYPE_PNODE:
((PNODE*)stack)[++(*top)] = (PNODE)item;
break;
default:
break;
}
}
//////////////////////////////////////////////////////////////////////////
// 스택 탑에 위치한 자료를 삭제
void* pop(void* stack , int* top , int data_type)
{
if( *top <= -1 ) fprintf(stderr , \"The stack is empty\\n\") , exit(1);
switch(data_type)
{
case TYPE_CHAR:
return &((char*)stack)[(*top)--];
case TYPE_PNODE:
return &((PNODE*)stack)[(*top)--];
default:
return NULL;
}
}
//////////////////////////////////////////////////////////////////////////
// 스택 탑에 위치한 자료를 가져옴
void* get_top( void* stack , int* top , int data_type )
{// 스택내에 자료가 존재 할시..
if ( *top > -1 && *top < MAX_STACK_SIZE-1)
{// 자료타입에 따라
switch(data_type)
{
// 자료반환
case TYPE_CHAR:
return &((char*)stack)[*top];
case TYPE_PNODE:
return &((PNODE*)stack)[*top];
default:
return NULL;
}
}
else
return NULL;
}
//////////////////////////////////////////////////////////////////////////
// 트리를 복사해서 그 복사된 트리의 루트를 반환
PNODE copyTree( PNODE original )
{
PNODE tmp = 0;
// 원본이 존재할 시 복사
if ( original )
{// 힙메모리 할당
tmp = (PNODE)malloc(sizeof(NODE));
if ( !tmp ){// 메모리 할당 실패일 경우 에러 출력
fprintf( stderr , \"The memory is full!\\n\");
exit(1);
}
// 해당노드가 데이터링크일 경우는 재귀함수 호출
if (original->tag == DLINK )
tmp->dlink = copyTree( original->dlink);
else // 데이터인경우 그냥 복제만.
tmp->dlink = original->dlink ;
tmp->link= copyTree( original->link );// 링크를 복사
tmp->tag= original->tag;// 태그 복사
return tmp;// 복제한 노드를 반환
}
// NULL일 시 널반환
return NULL;
}
//////////////////////////////////////////////////////////////////////////
// first와 second의 구조를 검사해서 같으면 참을 반환
bool isEaqual( PNODE first , PNODE second )
{
// 둘다 널일경우에 참 반환
if ( ( !first && !second ) )
return TRUE;
// 태그가 데이터링크 혹은 데이터 일때
// 둘다 존재하고 태그도 같고 데이터링크와 ,링크가 같으면 참 반환
else if ( first->tag == DLINK )
{
return ( ( first && second && ( first->tag == second->tag )
&& isEaqual( first->dlink , second->dlink ) /*링크라면 재귀함수 호출*/
&& isEaqual( first->link , second->link ) ) ) ;
}
else
{
return ( ( first && second && ( first->tag == second->tag )
&& (char)(first->dlink) == (char)(second->dlink) /*데이터라면 문자로 비교*/
&& isEaqual( first->link , second->link ) ) ) ;
}
}
//////////////////////////////////////////////////////////////////////////
// 문자열 사이의 공간(여백 , 탭)을 지움
void remove_space( char* string )
{
char* original_string = string; // 원래의 스트링
char str_tmp[MAX_STRING] = {0}; // 공백을 제거한 문자열을 임시저장 할 변수
int i = 0;// 임시 인덱스 변수
// 해당하는 변수가 존재하지 않거나
// 문자가 문자열 최대길이에 도달 할때까지
while (*string && i < MAX_STRING)
{
if (!isspace(*string))// 공백이 아니라면
// 복사하고 원본과 임시문자열의 다음 위치로 이동
str_tmp[i++] = *string++ ;
else // 공백이라면
string++;// 원본만 다음 문자열로 감
}
// 복사가 확실히 이뤄
  • 가격3,000
  • 페이지수41페이지
  • 등록일2011.11.08
  • 저작시기2011.10
  • 파일형식한글(hwp)
  • 자료번호#713171
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니