컴공 일기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를 선물하세요.
-
케이팝 아예 모르는데 그냥 존나 시원하다 ㅋㅋ
-
만점의 생각으로 독학 할까요 아니면 찬우쌤 생글듣고 만점의 생각을 풀면서 양을...
-
이투스 대성에 비해 렉이 심한데 (접속 수가 많아 그런가..) 다운로드해서 보시나요?
-
느낌이 어떠셨나요??
-
다들 영어 어법 강의 들은거 or 들을거 퉆 한 번씩만 ㄱㄱ
-
덕코 가져가라 10
천덕씩 나눠줄게
-
내가 못해서 그런가 도움 잘되고 집중하기도 좋음 어떤 과목이든 텍스트 읽을때 다...
-
오르비 복지 증진을 위해 노력합니다.
-
x 범위 파악할 때 수학2를 학습한 학생들에게 조금 유리한 면이 없지 않아 있다고...
-
왠지는 모르겠는데 보고싶어지고 좋은 쪽으로 생각하고 싶어지고 밤이라 그런가 더...
-
미적분 날먹 맛있네요
-
안녕하세요.. 3
안녕하세요 일반고 다니는 중인 고3 학생이에요 최근에 오르비 가입하게 되어서 글...
-
이미지 써주세요 4
ㄱ
-
힝힝
-
쪽지로 번호 남겨주세요!! (* 휴대폰이 없는 경우 상담 불가능합니다.) [생1...
-
n티켓 시즌1 하는데 4시간동안 수1.2 Day각각 1개씩 풀고 오답하거 아이디어...
-
하다보면 걍 별로 안 힘들고 나름 재밌는 부분도 많은 거 저만 그런ㄱㅏ요 열심히...
-
이미지 써드릴게요 26
댓 다갑니다
-
으 배불러
-
ㅇㅇ
-
06 유입이 왤케 업서 21
내가 잘해줄게... 같이 놀자...
-
내가 백창기가되고싶어짐
-
개 거지꼴로 노래방갔다옴;;
-
미적 노베 2
고2고 미적 처음 시작하려고 하는데 어떤강의 추천하시나용?
-
하하 그래도 버텨야 한다
-
풀이를 올려도 아무도 안볼것 같다...
-
ㅋㅋㅋㅋ
-
제발 한국인이면 아스날 응원합시다!!
-
힣
-
해강을 벅벅 보는게 아님? 드릴만 그런건가 드릴5-> 드크북 -> 이해원, 설맞이...
-
짝녀보고싶다 2
내일 보는데
-
ㅇㅈ 4
이제 자야할 시간이에요 It's time to go to sleep
-
제목을 뭐로짓지 9
이틀만에 들어와서 메인 댓글보고 괜히 가슴이 철렁했는데 무슨일이,, 저는 아니겠죠..?
-
노래추천! 4
지금 수학 풀건데 수학 풀면서 들을만한 노래 추천해주세요!!
-
작수 백분위 98인데 독서 약하고 문학 강해서 운빨이 좀 있었음 (독서 1개 문학...
-
나도 철야를 해보고싶다
-
근데 다들 반응이 이 콘같음.... 프사남최애 ㄹㅇ 흔하지않구나
-
https://orbi.kr/00067929157
-
이미지가 1타니까 이미지 사려고 했는데 미적분은 별로라는 소리가 많아서... 저 둘...
-
홍대맛집탐방 ㅇㅈ 18
점점살이찐다
-
매일 공부시간 10시간은 넘길텐데.. 아침부터 13시까지 너무 졸아서 -3시간...
-
내가 올해 부산대,경북대를 갈것이고 이재명 되면 부 경 떡상루트 탈것이기때문에...
-
일코너무 어렵네 10
걍 시원하게 까버릴까 현실에서 남캐일러투척을
-
인내심이 뒤져서 였네... 시간을 길게 잡고 거시적인 관점에서 봐야 하는데 시간을...
-
(텔 제외) 대학생이고 무휴반은 그동안 간섭 받을만큼 받아서 정신적으로 힘든 상태라...
-
정법vs지과 1
난이도 머가 더 어렵고 양은 머가 더 많지여?!
-
오공완^^7 0
할게태산이여 하
-
aomg다나가네 0
이러다미노이만남겟어
-
ㅅㅂ 나 광견병 걸려서 죽는거임????
c도 java처럼 다른 class를 불러올 수 있나요?
저는 한 class에 전부 작성했었는데
다른 class를 불러온다는 것이 어떤 의미인가요? 라이브러리 말씀하시는 건가요?
프로그래머의 관점에 따라서 여러 클래스가 나올 수 있죠. 하지만, 모든 것이 그렇듯 '정석'은 존재하는 것으로 알고 있어요. 주로, 객체지향에서는 GUI 부분 / 제어 부분 / 데이터 부분으로 나누어서 만들죠.
그래야, 유지/보수도 편리하기 때문이지요!
그렇죠, 동의합니다
#include "LCRSTree.h"
다른 class를 main class에 불러오는 부분이 java랑 비슷하다고 생각했어요 ㅎㅎ
좋은 내용 감사합니다!
아아 이건 C++이 아니라 절차지향언어에 해당하는 C로 작성된 코드인데, 주로 얘는 클래스라고 부르진 않고, 헤더 파일이라고 명명합니다.