컴공 일기157
게시글 주소: https://dev.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를 선물하세요.
-
내용을 아는데 문제를 틀림(?)
-
이 앨범 진짜 좋다 0 0
-
좆 0 0
학교실ㄹ러
-
단축수업 너무 야르인데 2 0
앙 기모찌
-
근데 더프나 서프 개인응시면 1 0
걍 안사고 ㅇㅂ에서 뽑아푸는게 낫나요? 일단 3덮 사긴했는데 다음부터 어케할까요?? 현역입니다!
-
N제 작년꺼 풀어도 괜찮나용 0 0
사촌형한테 책 작년 N제 몇개 받았는데 작년꺼여도 풀어봐도 괜찮겠죠? 참고로 기출...
-
무릎도 안 모이는데 안쪽이 왜 아픈지 모르게씀
-
생명 실모 양치기할까 2 1
진짜 n제 푼다고 크게 안느는거같기도하고 시간관리가 필요한데
-
나 오르비 글보면 0 0
고위관직맡게되면. 물러가라 시위도 나오겠네
-
미국지리 존나 재미없네 0 0
확실히 민족 관련된거 아니면 급격히 재미없어지네여 거의 다 아는거긴 한데 산업 관련...
-
논란글 타파법 알아냄 0 2
Ai라고 우기면 됨
-
우주설 1 0
우주설 라이브랑 김종두 인강(실전길라잡이 부터 현강합류 예정) 둘중 뭐가 더...
-
국어모고 5이상뜬적없음ㅋㅋ
-
제미나이 활용능력 평가 전형 아닌가 그냥 문득 든 생각임
-
난 논란될글 안씀 4 2
나중에 고위공직을 맡을수도 있잖아
-
이 글의 좋아요가 6개가 넘는다면 9 19
지금 오르비끄고 공부하러가겟음
-
내일도신촌가야하네..
-
맨날 똑같은 옷 입는사람 있냐 2 1
나는 여름 가을,봄 겨울 이렇게 3시즌으로 나눠서 매일 똑같은 옷만 입음 똑같은옷...
-
snumo 후기 0 1
1-12 무난 13 g(x) g(-x) 차수 같으니 삼차 극대 4 가지고 미분하면...
-
이거말하는거임? 1 3
-
수능 확통 통계 4 1
이항분포와 정규분포의 관계 출제 되나요? 제가 공부를 잘 못해서 완전히 습득하려는...
-
뻘짓을 넘 많이함 2 0
밥먹으면서 넷플릭스보다가 3시간을봄 ㅅㅂ 내일부턴 지식밥차봐야지
-
청문회:설의적표현 의원 3 2
202X년 X월 X일에 어느 커뮤니티에서 "한 달 동안 폭딸침 ㅇㅇ"라고 발언한...
-
3덮 윤사 2 0
14분 46점 사문말고 윤사오세요 도표보다 정신건강에 이로운듯
-
잘자. 9 1
잘자연
-
유빈 초대 0 0
제발 해주실분 안계신가요....???? 기숙갔다 나오니까 튕겼어요 ㅠㅠㅠㅠㅠㅠㅠ
-
작년 수능에서 화법과 작문을 선택했고, 국어 백분위 86으로 3등급이었습니다....
-
이거임 1 0
걍 아사람는 테토임
-
올해는 연비주행 할거임 1 0
실모시즌 전까지 대성패스만 쓸거임
-
수리논술하는애들 없니 0 0
독학하려는데 책추천이나 무료강의같은거 추천좀
-
2503 화1 시작한다는거심 4 3
만표 85 ㅅㅂ 뭐냐
-
5000덕)3덮 수학 점수 예측 ㄱㄱ 10 0
지금부터 풀거긴한데 일찍 자야해서 좀 막히면 바로 거를 예정 없으면 가장 가까운...
-
그 물리였나 화학반이었는데 내가 보기엔 딱히 안 예쁜데 남고 출신 물리러들이 걔...
-
오늘의 공부 2 0
-
초미녀 퇴근 2 2
3덮 해설은 진짜 기빨리네
-
야심한 밤 2503 4 0
컷이 뭔가 이상한 2503 화1을 풀어볼까여ㅕㅕㅕ
-
종종 시대 부남들이 하는 착각 5 5
여자애들이 대부분 웃으며 대꾸해주고 받아준다 그건 착해서 그렇게 받아주는거임 오히려...
-
서프 84 더프 84 8 3
어떤게 더 잘한거임 그나마?
-
수학 노베 16212 0 0
예체능 재수생이고 음악함 잘 기억도 안나지만 고1까진 수학했었는데 고2부터는 거의...
-
이미지 김범준 1 0
확통 4점을 맞추고 싶어서 기출하면서 이미지 미친개념, 김범준 스타팅블록 둘 중...
-
서프 국수영 후기 2 1
국어 독서 불 문학 무난 언매 까다롭 수학 2611 깔에 비킬러 강화? 영어 71점이 어케평가하겟슴
-
오늘은 학교 수업에서 강간에 대해 토론함
-
아이언을 넘는 래퍼가 없네 2 0
아으
-
16cm보다 큰사람만 댓글 달아주셈 22 4
기억해둘게요
-
Mt랑 알바랑 걉쳐요 사장님 2 1
말하면 하루 빼주실라나..
-
뉴진스 글쓰던사람 ㅇㄷ감 1 0
어원쓰던사람
-
작년대비 시즌1 얼마나 됬나요???
-
국수영 원점수 합 262 15 2
근데조금이상함
-
이거 좀 들어주셈 8 0
소원임 가사도 개조음

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