컴공 일기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를 선물하세요.
-
녹차도 2개 파는거보소 말차 없는게 말이됨?
-
천하람 "AV페스티벌서 성매매? 그럼 룸살롱은 왜 문 안 닫나" 3
일본 성인동영상(AV) 배우들이 출연하는 ‘성인 페스티벌’(2024 KXF The...
-
....?
-
"말이 되나" 욕먹더니 결국…2000조원 드는 '빈살만 시티' 휘청 2
사우디아라비아 실세인 무함마드 빈 살만 빈 압둘라지즈 알사우드(39·약칭 빈살만)...
-
탐구 과목에서 중요할 판단, 당신은 어떤 선택을 하시겠습니까? 1
당신은 수능에서 탐구를 풀고 있고, 3점짜리 2문제가 남았습니다. 안타깝게도,...
-
일단 방송 봐야겠다...
-
학생에서 마스터 전환 신청했는데 얼마나 걸리는지 아는 사람 있나요
-
빨리 가야하는데 뭔 차가이리많은지 버스가 계속 서버리네
-
대의제의 한계 보완 / 정치 사회화의 기능 담당은 정당, 이익집단, 시민단체, 언론...
-
오 내가 활랭에 없다니 13
완전 라이트 유저네 나
-
러셀 심찬우T 기테마 2.0 현강 신청했는데 기테마 1.0 오티 들어보니 생감은...
-
which is better?
-
나는 바보가 맞다 11
-
다들그렇지?
-
생명 안풀린다… 2
이상하다 생명 개쉬웠는데 왜 안풀리지…
-
탈탈털렸다 0
야발야발
-
반수러라 사탐 개념기출이 6월중에 끝날것같은데 좀 늦나요? 0
세지 사문입니다!!
-
확실히 명문대 학생이긴 하네 듣기는 만점처리하고 45분 줬다함
-
큰 프렌차이즈카페에 평일 오전 기준
-
독서실에 항상 거울올려두고 보고 지나가다 거울 보이면 멈춰서 꼭 봄ㅋㅋ
-
손이 말을 안 들어
-
아침 출근 시간 바쁠 때 비 ㅈㄴ 내리더니 낮에 날씨 엄청 맑네 저번주에도 이러더니ㅋㅋㅋ
-
공부나 해야지 2
빨리 입시판 뜨고싶다 불난집이 내집이니까 그지같네
-
밤양갱 등장 ㄷㄷ
-
고2때부터 수학만했고 이번 3모수학빼고 올 1인데 수학만 3이 나와서 뭐가 문제인지...
-
고마워요 미디어법!
-
안녕하세요. 며칠 전에 긴 정보글로 인사드렸던 김미한입니다. 오늘은 짧은 정보글을...
-
어차피사회나가면 4
배고프다
-
수학 시발점 워크북까지 국어 나비효과+강의하나정도 물리 필수본+3순환 첫권 생명...
-
Factos.
-
다 맞은듯..? 1
후.. 이제 교양만 남았으니 놀아야지 ^^
-
안녕하세요 :) 디올러 S (디올 Science, 디올 소통 계정) 입니다....
-
민주주의 국가에서 침묵도 권리 아님? 윤석열이 싫으면 서울대생들은 윤석열에 분노...
-
25뉴런 1
23대비 뉴런이랑 차이 큰가요? 25가 24그대로 재탕한거라고는 들엇는데...
-
교실이데아 짤 일리 있는 얘기라고 생각해서 쓴 글인데 3
댓글 디게 살벌하네 맥락을 보려고 아예 영상 자체를 찾아보려고 했더니 유튜브에는...
-
지수로그는 그냥 그런데 코사인법칙이랑 수열이 꿀잼
-
운동하러 산에 못올라감 응애응애
-
韓 부실 PF 부채 111조…그림자 금융 '약한 고리' 부상 1
[서울경제] 전 세계적으로 부동산 대출 부실에 대한 경고음이 커지는 가운데 글로벌...
-
앞페이지에서 자꾸 이상하게 틀리는데 왜지.... 수특으로 정리 다시하면 좀 잡히려나
-
내가 사면 떨어지고 내가 팔면 오름
-
요즘 강의말고 좀 옛날 영상들 중에 분필 케이스 안끼고 맨손으로 완전 짧은 분필로...
-
수능 국수영탐1탐2 4 2 2 2정도면 1년 더 하면 어디 나올 것 같음? 9
국 수 영 과탐1 과탐2 2 4 2 2 2 에서 1년 더 하면 국 수 영 과탐1...
-
건동홍 3
안녕하세요 건동홍이 너무 가고싶은 재수생입니다 현재 국어3 수학 5 영어 7 탐구는...
-
성한서vs한성서vs서성한vs서한성vs성서한vs한서성 뭐가 맞음
-
경찰대 준비할까 6
몸과 마음은 늙고 병들었지만 애국심은 살아있어요
-
1234 비번...
c도 java처럼 다른 class를 불러올 수 있나요?
저는 한 class에 전부 작성했었는데
다른 class를 불러온다는 것이 어떤 의미인가요? 라이브러리 말씀하시는 건가요?
프로그래머의 관점에 따라서 여러 클래스가 나올 수 있죠. 하지만, 모든 것이 그렇듯 '정석'은 존재하는 것으로 알고 있어요. 주로, 객체지향에서는 GUI 부분 / 제어 부분 / 데이터 부분으로 나누어서 만들죠.
그래야, 유지/보수도 편리하기 때문이지요!
그렇죠, 동의합니다
#include "LCRSTree.h"
다른 class를 main class에 불러오는 부분이 java랑 비슷하다고 생각했어요 ㅎㅎ
좋은 내용 감사합니다!
아아 이건 C++이 아니라 절차지향언어에 해당하는 C로 작성된 코드인데, 주로 얘는 클래스라고 부르진 않고, 헤더 파일이라고 명명합니다.