전체 글
-
Tree - 이진 트리의 구현과 순회자료구조와 알고리즘/자료구조 2023. 5. 15. 22:48
1. 배열? 연결리스트? 이진트리는 배열로 구현할 수도 있고 연결리스트로 구현할 수 도 있다. 이때 트리가 완성 된 후 빈번한 탐색이 이루어지는 등 특정한 필요에 따라 배열로 구현할 수 있지만 (ex heap) 일단 연결리스트로 구현해 보자. 2. 이진 트리의 ADT BTreeNode* MakeBTreeNode(void) - 이진 트리 노드를 생성하여 그 주소 값을 반환 BTdata GetData(BtreeNode*bt) - 노드에 저장된 데이터를 반환 void SetData(BTreeNode*bt, BTdata data) - 노드에 데이터를 저장함 BTreeNode* GetLeftSubTree(BTreeNode* bt) - 왼쪽 서브트리의 주소를 반환 BTreeNode* GetRightSubTree(B..
-
Tree - 트리와 이진트리란자료구조와 알고리즘/자료구조 2023. 5. 15. 22:38
1. 트리란? 트리는 계층적관계를 표현하는 자료구조이다. 1.2 선형자료구조와의 차이점 (약간) 자료구조는 데이터를 표현하는 방법이다. 저장, 삭제, 조회 등의 기능이 제공되는 것이다. - 선형자료구조는 데이터를 저장하는 것과 표현하는 것을 나누어 생각하기 힘들지만, 비선형은 데이터를 표현하는 관점에서 자료구조의 특징이 잘 들어난다. - 예를들어 위와 같은 연결리스트로 동물의 종의 데이터와 사원의 이름 데이터를 저장한다고 한다면, 정해진 순서에 맞게 데이터를 일정한 방향으로 추가하여 저장할 것이다. 이를 위해 우리는 동물에 맞는 연결리스트 혹은 사원에 맞는 연결리스트를 따로 만들진 않았다. - 이와 다르게 트리를 이용해 종속과목강문계에 따라 동물의 데이터를 나타내려는 것과 사원 데이터를 직급별로 나타내려..
-
자바 - 입출력(I/O) 표준입출력과 File, 직렬화카테고리 없음 2023. 5. 14. 23:41
1. 표준입출력 (System.in out err) 표준입출력은 콘솔을 통한 데이터의 입력과 콘솔로의 데이터 출력을 의미한다. 자바에서는 표준 입출력을 위한 3가지의 입출력 스트림을 제공하는데, 자바 어플리케이션의 실행과 동시에 사용할 수 있게 자동적으로 생성된다. 2. 표준입출력 대상변경 - setOut(), setErr(), setIn() 콘솔화면 외에 다른 입출력 대상으로 변경하여 지정한다. 각각 지정된 PrintStream / InputStream으로 입출력 대상 변경한다. setOut() ,Err() 등을 호출 한 뒤 System.in, out등 표준 입출력을 사용하면 지정한 입출력 대상으로 입력 출력됨 3. RandomAccessFile RandomAccessFile은 하나의 클래스로 파일에 ..
-
자바 - 입출력(I/O) (1) 바이트기반 스트림/ 문자기반 스트림언어/JAVA 2023. 5. 14. 23:15
1. 입출력과 스트림 입출력이란? 컴퓨터 내부 또는 외부의 장치와 프로그램 간 데이터를 주고 받는 것을 말한다. 키보드로 데이터를 입력받는 것 혹은 System.out.println()로 화면에 출력하는 것 등을 의미 스트림이란? 데이터를 운반하는데 사용되는 연결통로이다. 스트림은 단방향 통신만 가능하다 따라서 하나의 스트림은 입력과 출력을 동시에 처리할 수 없다. 입출력을 위해선 입력/출력 스트림이 필요하다. 스트림은 queue와 같은 FIFO구조이다. 1.2 바이트 기반 스트림/ 문자 기반 스트림 바이트 기반 스트림: 데이터를 바이트 단위로 처리하며, 있는 그대로 송수신 사진, 동영상,음악파일등의 송수신에 적합하다.(문자 데이터 송수신도 가능) InputStream/OutputStream 모든 바이트..
-
자바 - BattleShip Game미니 2023. 5. 14. 20:36
자바로 구현한 배틀쉽 게임이다. 게임 룰 https://en.wikipedia.org/wiki/Battleship_(game) Battleship (game) - Wikipedia From Wikipedia, the free encyclopedia Strategy type guessing game for two players A map of one player's ships and the hits against them, from a game in progress. The grey boxes are the ships placed by the player, and the cross marks show the squares that t en.wikipedia.org 1. 각 플레이어는 정해진 규칙에 따라 필..
-
Deque자료구조와 알고리즘/자료구조 2023. 5. 14. 10:58
Deque(덱)은 양방향으로 데이터를 꺼내거나, 삽입 할 수 있는 자료구조를 의미한다. 구현 덱의 구현은 양방향연결리스트의 소스를 참고하여 활용하면 비교적 간단하게 만들 수 있다. 헤더 #ifndef _DQUE_H #define _DQUE_H typedef int data; typedef struct _node{ data data; struct _node* next; struct _node* pre; }node; typedef struct _Dque{ node* head; node* tail; int size; }Dque; typedef Dque Deque; void DequeInit(Deque* pq1); int DQisEmpty(Deque* pq1); void DQAddFirst(Deque* pq1,..
-
Queue - 원형 큐, 연결리스트자료구조와 알고리즘/자료구조 2023. 5. 13. 11:11
큐는 먼저 들어온 데이터가 먼저 나가는 구조로 (FIFO) 스택과 반대되는 개념이라고 볼 수 있다. 큐에서 자료를 넣는 연산은 Enqueue, 자료를 꺼내는 연산을 Dequeue라고 한다. 단순히 스택과 반대되는 개념이므로 쉽게 생각할 수도 있지만, 한가지 생각할 점이 있다. Back 방향 데이터가 삽입되고, Rear가 그 위치를 나타낸다. Front 방향으로 데이터가 꺼내지고, 그 위치를 Front가 가리킨다. 1. 단순 배열 기반 큐 배열은 크기가 미리 정해져 있기 때문에, 이를 기반으로 한 큐를 구현하면, 같은 한계를 지닌다. 다음과 같이 배열의 크기가 6인 상황에서 모든 데이터를 Dequeue한다고 생각해보자. 그렇다면, 이제 Rear가 가리킬 수 있는 것은 배열의 마지막 인덱스 뿐이고, 넣을 수..
-
스택의 활용 - 계산기 프로그램자료구조와 알고리즘/자료구조 2023. 5. 13. 10:26
스택을 활용해서 계산기를 만드는 연습문제이다. 중위표기식 -> 후위표기식 -> 후위표기식 계산 순서로 이루어진다. 먼저 중위표기식을 후위표기식으로 고쳐보자 1. 중위 to 후위 헤더 #ifndef __PostFix_h #define __PostFix_h void ConvertRPN(char exp[]); #endif 소스 #include "Postfix.h" #include #include "CStack.h" #include #include int PrecOP(char op1, char op2){ int op1_n = GetOp(op1); int op2_n = GetOp(op2); if(op1_n == -1 || op2_n == -1){ printf("에러"); exit(-1); } if(op1_n > ..