컴공 일기157
게시글 주소: https://orbi.kr/00058025549

비선형 자료구조 Tree 구현
-LCRSTree.h
#include <stdio.h>
#include <stdlib.h>
typedef struct tagLCRSNode
{
struct tagLCRSNode* LeftChild;
struct tagLCRSNode* RightSibling;
int Data;
}LCRSNode;
LCRSNode* LCRS_CreateNode(int NewData);
void LCRS_DestroyNode(LCRSNode* Node);
void LCRS_DestroyTree(LCRSNode* Root);
void LCRS_AddChildNode(LCRSNode* ParentNode, LCRSNode* ChildNode);
void LCRS_PrintTree(LCRSNode* Node, int Depth);
void LCRS_PrintNodeAtLevel(LCRSNode* Root, int Level);
-LCRSTree.c
#include "LCRSTree.h"
LCRSNode* LCRS_CreateNode(int NewData)
{
LCRSNode* NewNode = (LCRSNode*)malloc(sizeof(LCRSNode));
NewNode->LeftChild = NULL;
NewNode->RightSibling = NULL;
NewNode->Data = NewData;
return NewNode;
}
void LCRS_DestroyNode(LCRSNode* Node)
{
free(Node);
}
void LCRS_DestroyTree(LCRSNode* Root)
{
if (Root->RightSibling != NULL)
LCRS_DestroyTree(Root->RightSibling);
if (Root->LeftChild != NULL)
LCRS_DestroyTree(Root->LeftChild);
Root->RightSibling = NULL;
Root->LeftChild = NULL;
LCRS_DestroyNode(Root);
}
void LCRS_AddChildNode(LCRSNode* Parent, LCRSNode* Child)
{
if (Parent->LeftChild == NULL)
{
Parent->LeftChild = Child;
}
else {
LCRSNode* TempNode = Parent->LeftChild;
while (TempNode->RightSibling != NULL)
TempNode = TempNode->RightSibling;
TempNode->RightSibling = Child;
}
}
void LCRS_PrintTree(LCRSNode* Node, int Depth)
{
int i = 0;
for (i = 0; i < Depth; i++) {
printf(" ");
}
printf("%c\n", Node->Data);
if (Node->LeftChild != NULL)
LCRS_PrintTree(Node->LeftChild, Depth + 1);
if (Node->RightSibling != NULL)
LCRS_PrintTree(Node->RightSibling, Depth);
}
void LCRS_PrintNodeAtLevel(LCRSNode* Root, int Level) {
if (Level == 0)
printf("%c\n", Root->Data);
if (Root->LeftChild != NULL && Level > 0)
LCRS_PrintNodeAtLevel(Root->LeftChild, Level - 1);
if (Root->RightSibling != NULL)
LCRS_PrintNodeAtLevel(Root->RightSibling, Level);
}
-main.c
#include "LCRSTree.h"
int main(void)
{
LCRSNode* Root = LCRS_CreateNode('A');
LCRSNode* B = LCRS_CreateNode('B');
LCRSNode* C = LCRS_CreateNode('C');
LCRSNode* D = LCRS_CreateNode('D');
LCRSNode* E = LCRS_CreateNode('E');
LCRSNode* F = LCRS_CreateNode('F');
LCRSNode* G = LCRS_CreateNode('G');
LCRSNode* H = LCRS_CreateNode('H');
LCRSNode* I = LCRS_CreateNode('I');
LCRSNode* J = LCRS_CreateNode('J');
LCRSNode* K = LCRS_CreateNode('K');
LCRS_AddChildNode(Root, B);
LCRS_AddChildNode(B, C);
LCRS_AddChildNode(B, D);
LCRS_AddChildNode(D, E);
LCRS_AddChildNode(D, F);
LCRS_AddChildNode(Root, G);
LCRS_AddChildNode(G, H);
LCRS_AddChildNode(Root, I);
LCRS_AddChildNode(I, J);
LCRS_AddChildNode(J, K);
LCRS_PrintTree(Root, 0);
LCRS_PrintNodeAtLevel(Root, 1);
LCRS_PrintNodeAtLevel(Root, 2);
LCRS_PrintNodeAtLevel(Root, 3);
LCRS_DestroyTree(Root);
return 0;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
강k 2회 쉽구만 0 0
살면서 96점 처음 맞았어
-
국영수 서바 2회 등급컷 5 4
전국 서바 아니구요 그냥 서바입니다. 2회는 국영수 다 어려웠던 거 같네요.
-
라멘 연습 20 7
아침에 만든 아지타마고가 좀 덜 숙성된듯..
-
오공완(플래너 공부인증) 6 1
플래너 그지같이 써서 ㅈㅅ함 이미 쓴 계획 다시 바꾸느라 그랬음 8시간 공부완
-
버스가 어떻게 가는지도 모르고 버스를 타는것은 버스를 타는게 아니고 버스에 실리는것이다 0 0
-고 이건희회장-
-
여자친구 만나러 가야지 10 3
라프텔들어간다는뜻
-
경희대 근처 식당 중에 3 1
베트콩이라는 곳이 있었군
-
오늘 공부량 어제보다 3시간 적네
-
고대 최대 단점 11 2
그린캠퍼스 정책으로 에어컨 시원하게 안틀어줌 여름에 진짜 죽어납니다 열람실 너무...
-
전에는 문제 항상 만들때 나름의 철학이 있었는데 3 2
요즘 마인드는 걍 다 먹고 살려고 하는건데 팔리면 장땡이지란 생각이 있음...
-
옛날에 한컴타자연습할 때 4 2
친구가 내기하자고 하고선 내 키보드 설정을 쿼티에서 드보락으로 바꿔버렸음 컴맹인...
-
쿼티 2 1
-
더워서 그런가
-
“저런 주기 함수는 눈으로 풀리는 경우가 대부분 가 조건 보면 알겠지만 과조건이야”...
-
제2의 사평우가 되고 싶다 6 2
ㄹㅇ
-
여자비율 높은 공대 알려줌 8 4
바로바로~~~~ . . . 이화여대 공대에 가면됨!!!! 허접들 여기까지 오느라...
-
현역수능 미적5등급받고 재수때 진짜 엄청 열심히 해서 미적 2틀까지 만들었는데...
-
아뭔가희망을봄 3 0
수2멍청이탈출각이보이는데
-
예아
-
260714 수학 1 0
선분 MN 보조선 긋고 닮음으로 풀어서 그런지 계산이 생각보다 간결하게 끝났네요...
-
한국어가 가진 희소한 특성 3 0
화자의 의외성을 문법 표지(-네 어미)로 나타낼수 있는 전세계 메이저 언어(소수민족...
-
2028은 적백이 없음 0 0
통백임 통백
-
여자 비율이 이게 맞나?... 7 1
80프로 확률로 물리학과나 전기전자 갈것 같은데 여자 비율이 11퍼?...
-
영어 진짜 족노잼이네 2 1
한문장보고 오르비 한번 보고 아 이러면 안되는데
-
전형태가 ㄹㅇ 숨꿀 고트인데 1 1
문학올인원 문개집 씹고트고 나기출도 해설 맛도리고 나bs 강의없이 독학으로...
-
맘터 메뉴 ㅊㅊ좀 10 0
싸이버거보다 맛있는거 있냐
-
수학실력 올리는 데 2 0
실모 vs n제 뭐가 더 효과적일까요 6모 92점(28번 계산실수틀, 22틀) 실모...
-
18시간자서 3 3
공부하나도못함뭐지이쓰레기
-
적백녀한테 맞고싶다 5 0
언백적백설물천
-
다들 마니 먹어 2 2
여름엔 기운 빠지니까 많이 잘 먹고 쑥쑥 커
-
작가 정신상태가 아직도 궁금함
-
지1 4페 0틀 39점 2 1
1,7,10,11번 틀림.. 뭐가문제지
-
우리학교얼마없는장점 4 1
근처지하철역이많음
-
정벽은 왜 두명이에요? 6 3
-
지2 실검에서 내려갔네 9 2
아쉽다
-
안녕하세요 지나가는 의대생입니다. 방금 2027 수학 서바 1회를 풀었습니다....
-
수능 적백을 이뤄내자 3 2
9모 전까지 안정 96을 쟁취하자
-
공부얘기그만하고 8 3
이상형얘기합시다 저는 인문대여자선배가좋으네요
-
시상식이 엊그제같은데 벌써 시간이 이렇게 됐네요 앞으로도 양질의 컨텐츠로 찾아뵙는...
-
ㅋㅋㅋㅋ 2 2
-
이제는 2sin역 (6sinx) 이딴거 적분하라고 하면 대칭성보다 와 쉬바...
-
케리아의 바드 2 0
그정도인가 <<<
-
적백 어떻게 맞나요 4 1
저도 적백 하고싶습니다
-
물론 공바공이긴 하다만.. 짧게 급전벌기 조음요 밥도 잘 나왓구(성서공단)
-
진지하게 이 5개중에서만...
-
적백에도 급이있다 5 2
벌써일년>>>>>>>>>>미분끼아악
-
인강민철 표지 마음에 안듦 0 1
1-6호는 무난한거같았는데 7,8호는 거부감듦
-
열품타 잴때 인강 듣는 시간도 포함하시나요 다들
-
근데 뭔가 이대로 살다간 6 2
쉬었음 청년 될 것 같음
-
우울함) 3 5 6 7 적88은 뭐라고 설명해야 하지 2 0
약간 넌 딱 88 정도 이하의 사람이다 하고 못 박는 듯한 기분이 듦 물리는 몰라도...

c도 java처럼 다른 class를 불러올 수 있나요?
저는 한 class에 전부 작성했었는데
다른 class를 불러온다는 것이 어떤 의미인가요? 라이브러리 말씀하시는 건가요?
프로그래머의 관점에 따라서 여러 클래스가 나올 수 있죠. 하지만, 모든 것이 그렇듯 '정석'은 존재하는 것으로 알고 있어요. 주로, 객체지향에서는 GUI 부분 / 제어 부분 / 데이터 부분으로 나누어서 만들죠.
그래야, 유지/보수도 편리하기 때문이지요!
그렇죠, 동의합니다
#include "LCRSTree.h"
다른 class를 main class에 불러오는 부분이 java랑 비슷하다고 생각했어요 ㅎㅎ
좋은 내용 감사합니다!
아아 이건 C++이 아니라 절차지향언어에 해당하는 C로 작성된 코드인데, 주로 얘는 클래스라고 부르진 않고, 헤더 파일이라고 명명합니다.