컴공 일기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떴는데 오늘 처음으로 84 93 떳네요 찍은게 없긴 한데...
-
3모 성적 기록 0
나만 문학 어려웠나.. 문학 첫세트 개박살남 역시 3월 수학 등급컷 정말 후하구나...
-
커플 들어오면 바로 이노래 on
-
어 형이야 0
형은 동사점수가 수학점수랑 비슷해 수상하 씨발놈아
-
주요문항 미리보기입니다 기하 계산 상태 왜이럼
-
[생명과학1 유전] 2024년 03월 28일 모의고사 유전 풀이 0
안녕하세요 생달입니다. 오늘 3월모의고사가 있었죠? 유전 파트만 문제풀이...
-
... 1
-
침대인 거 같음
-
알면 나랑 동년배야 ㅎㅎ
-
ㅋㅋㅋㅋ 1
ㅋㅋㅋㅋ
-
내일할거 0
작수 12 14 풀고 22 실마리라도 찾아보기
-
복권중독으로 만족해요
-
3모에 대한 제 개인적인 문제에 대해 기록을 남기려고 했는데 1
막상 글로 쓰려니까 좀 그렇네요.. 이건 개인적으로 워드에다 써서 한번 쭉 읽고...
-
생존신고 0
-
사탐런하려는데 1
지구 도저히 못하겠어서 사탐런하려는데 생명+동아시아사 생윤+동아시아사 뭐가좋을것같음?
-
해설 보는데 앞에 감소감소까지는 이해 가는데 마지막 증가가 c를 통과하고 d로...
-
딥하게도 마시고, 오르비를 마치 현생 살듯이 하지도 마시고, 괜스레 내적 친밀감으로...
-
작수랑 점수가 같네 ㅋㅋ...
-
05년생친구가 동갑인줄알았다는데 그럼 저도그냥 05년생이랑 다를게 없지않나요??? 안그런가요??
-
을 해서는 돼
-
6월초입대인데 영수만하고들어가려고했는데 영어까먹을거같아서 차라리 수학만 열심히하고...
-
힘들다진짜 0
14번 생각다하고 케이스하나안봐서 틀림 한국사펼치다가 생각나서 다시 보니까….하…....
-
잡담글 안쓸게요 공부나 덕후 관련 글만 쓰겠습니다
-
ㆍ
-
3모 학평 물1 1
물2가 없으니 물1이라도 하겠습니다. 4페이지가 쉽게 나와서 난이도는 쉬운편인 듯 합니다.
-
6평 성적표로 증명하겠습니다
-
술찌는 힘들다 2
참이슬 빨뚜 한병이면 토함 우욱
-
ㅈㄱㄴ
-
국어 문항들에서 궁금했던 것들 궁금한 지문들 문항이랑 지문이랑 댓글에 써주세요...
-
몇시간 정도 해야함 평일에? 국영수 위주로 해야할것같은디
-
쿠궁
-
패스 양도 0
인강 패스 양도 해도 되나료? 혹시 관심 있으신 분은 쪽지 주세요
-
사람들 계속오네
-
덧셈정리로 ×0되는 부분을 떼고 생각하면 되는구나
-
몰랐던거 정리하고 한번더 푸는것도 ㄱㅊ? 20문제중에 풀이과정 아예 안잡히는거...
-
재수생 3모 0
재수생 3모 학원에서 응시할 수 있었나요? 누구는 된다고 하고 누구는 안 된다고 해서요
-
이게 뭐냐
-
2달간 모고로 연습 꽤나 해도 항상 4-6개는 틀려먹는데 ㄹㅇ 어캄... 제발...
-
현우진 해설영상 0
몇시에올라오는지 아시는분?
-
역시 킹갓 서울시
-
울 거 같아서 4번씩 속으로 부르고 되뇌었는데 기억이 안 남.. 인류는 세기의 명곡을 잃었다..
-
뭐지 ㄷㄷ….
-
3모 메가 환급 0
한번호로 찍어도 환급에 영향 없죠??
-
참
-
진짜 너무 좋아서 입에서 침이 줄줄 흐름;; 내가 이걸 왜 이제 알았지
-
인생이 모고랑 관련없어진 게 상당히 오랜만이라 이것도 기분이 묘하네 그냥 전부...
-
1컷이 난도대비 후한편? 아님 짠편? 06들 잘하려나
-
계산 많고 어려웠습니다. 발상을 요하는 문제보단 계산력을 중요시한 느낌이 나네요....
-
현 고3... 고2 모고 때 화생으로 50 쭉 맞았다가 유전을 정복할 자신 없어서...
c도 java처럼 다른 class를 불러올 수 있나요?
저는 한 class에 전부 작성했었는데
다른 class를 불러온다는 것이 어떤 의미인가요? 라이브러리 말씀하시는 건가요?
프로그래머의 관점에 따라서 여러 클래스가 나올 수 있죠. 하지만, 모든 것이 그렇듯 '정석'은 존재하는 것으로 알고 있어요. 주로, 객체지향에서는 GUI 부분 / 제어 부분 / 데이터 부분으로 나누어서 만들죠.
그래야, 유지/보수도 편리하기 때문이지요!
그렇죠, 동의합니다
#include "LCRSTree.h"
다른 class를 main class에 불러오는 부분이 java랑 비슷하다고 생각했어요 ㅎㅎ
좋은 내용 감사합니다!
아아 이건 C++이 아니라 절차지향언어에 해당하는 C로 작성된 코드인데, 주로 얘는 클래스라고 부르진 않고, 헤더 파일이라고 명명합니다.