컴공 일기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
-
오늘도 0
-
얼버쥐 3
모두들 안녕
-
심장 엄청 빨리 뛰네요
-
백분위를 살 평가원 개xx들아! 기출 주면 풀고 실수하면 그러면 죽고. 그러면서도
-
히히 발싸 5
-
이렇게 댓글이 많이 달리네…
-
하 인생 이미 자기엔 늦었는데
-
눈뜨고 일어나면 반복될 똑같은 일상이 두렵다
-
나도 고오급 양복 차려입고 벤츠 타는 삶을 살고 싶음.. 그러나 현실은…? ^교^
-
은지원:저는...게임에 빠져...가정에 소홀했습니다 1
근데 아직도!게임을 자빠져 하고 있습니다
-
일단... 그림을 통해 질문드려야 해서 제가 만들어 왔습니다. 여태껏 [1] 처럼...
-
진심 살아서 죄송합니다. 연고대 텝스 최저 충족하고 김0 연고대 전문관 학원에서...
-
좋나게 공하싫 0
그럴땐 잠시 클오클에 들어가서 파밍을 한다!
-
그시절 기억 오버랩되고 좋다
-
ㅇㅇㅇ?? 잠 안오는디 지금 수학 좀 풀고 걍 좀따 잘까여 ㅁㅌㅊ?
-
인도네시아한테 0
엄
-
대학교 다니다가 현타와서 학사경고 받으면서 지금부터 수능 공부 시작하려고 하는데...
-
시대인재 수학 1
시대인재 수학 강의안듣고 문제만 풀면 효과없나요
-
내일 시험 하나 과제 하나가 끝 맞았겠지...
-
밤새는 중인데 스트레스 수치가 맥스가 아니라고...?
-
공병,포병,급식병처럼 손톱병도 있나요? 어릴때부터 엄마가 손톱깍아줘서 저는...
-
근데그렇다고문과를갈수도없고하
-
존나자야지 2
행복하다
-
아자살마렵다 1
미분적분학<못하겠음걍울고싶름 해설이라도쳐써있어야 보고 공뷰를 할거아님씨발
-
안자냐
-
♥독서♥ 수특 독서 본책에서 수특사용설명서로 옮겼는데 만족 지문 분석 빈칸 학습지...
-
오래된 생각이다 다들 공부도 잘하고 10대후반20대초반에 목표를 향해 달려나가는게 ㄹㅇ멋있음
-
시대인재 안가람 김현우쌤 컨텐츠가 어떻게 되나요
-
관절이 뻐근해요... 늙었네..
-
국어 ebs 계간지 듄탁해 상상이감 떡칠 수학 한완수 심특 이후엔제 떡칠 영어...
-
누가 인증좀 이럴떄
-
https://orbi.kr/00067934425 https://orbi.kr/00067934425
-
이번에 중간고사 휴강 끝나면 안가람쌤 수업 들으려고 하는데 난이도가 어느정도...
-
사람도 얼굴 이쁘고 잘생기면 이유없이 호감이듯이 책도 외관이 이쁘면 문제퀄 좆구려도...
-
마치 오르비를 하면 현생을 살지 못하게되는것과 같은 이세카이는 나와는 맞지 않을지도...
-
"맨입으로?"라는 말을 이해 못 할 수 있나요..? 26
정보) 같은 04년생 24학번임..
-
안녕하세요 오르비 여러분. 그동안 가입하고 글 읽기만 하다가 이제 글을 쓸수있게...
-
200일 11
25533 지금부터 해서 연대 어문계열 가능? 영어 개빡세게 할거고 사탐은 12는 나오다가 삐끗함
-
난이도차이가 어느정도임? 24수능미적분이 더 어려운거같은데
-
자기가 어떠한 이유로 정법을 잘한다고 생각해요? 국어를 잘해서?
-
공부를 ᄒᆞ기 슬ᄒᆞ도다
-
흠!
-
리플레이나 위콤정도 난이도 뭐뭐 있나요
-
1등급을 목표로했을때 공부량은 사탐 과탐이 더 큰거같은데 님들은 어떰
-
물2 3
물2 지금부터 하면 1등급 가능할까요 설수리나 설원자핵 가고싶은데 물2 양이 좀 많을까요?
-
열심히하면 홍대 자전 가능성있을까요.... 진짜 너무 가고싶은데 현역 문과입니다...
-
고쳐주세요 ㅜ 1
프사가 안보여요 앱르비..
-
다른버스가 종료됐네 에바
c도 java처럼 다른 class를 불러올 수 있나요?
저는 한 class에 전부 작성했었는데
다른 class를 불러온다는 것이 어떤 의미인가요? 라이브러리 말씀하시는 건가요?
프로그래머의 관점에 따라서 여러 클래스가 나올 수 있죠. 하지만, 모든 것이 그렇듯 '정석'은 존재하는 것으로 알고 있어요. 주로, 객체지향에서는 GUI 부분 / 제어 부분 / 데이터 부분으로 나누어서 만들죠.
그래야, 유지/보수도 편리하기 때문이지요!
그렇죠, 동의합니다
#include "LCRSTree.h"
다른 class를 main class에 불러오는 부분이 java랑 비슷하다고 생각했어요 ㅎㅎ
좋은 내용 감사합니다!
아아 이건 C++이 아니라 절차지향언어에 해당하는 C로 작성된 코드인데, 주로 얘는 클래스라고 부르진 않고, 헤더 파일이라고 명명합니다.