이진 트리를 배열을 이용해 먼저 구현해 보자. 위 사진을 보면 0번째 배열은 사용하지 않고 1번에 A, 2번에 B ~ 순서로 저장한다. 이번엔 이진 트리를 연결 리스트를 이용해 구현해보자. 연결 리스트는 위와 같이 왼쪽, 오른쪽으로 구분한다. 선형 구조에서 앞,뒤로 구분한 것과 비슷하다. #include #include typedef int BTData; typedef struct _bTreeNode{ BTData data; struct _bTreeNode * left; struct _bTreeNode * right; }BTreeNode; //노드 생성,노드 초기화 BTreeNode * MakeTreeNode(){ BTreeNode * newNode=(BTreeNode*)malloc(sizeof(BTre..
트리는 스택,큐와 달리 비선형, 계층적 관계를 표현하는 구조이다. 트리는 데이터의 저장,삭제 보다는 표현에 초점을 두고 있다. terminal node : 아래에 다른 노드가 뻗치지 않은 최하위 노드 ex)H,I,J,F,G internal node: terminal node를 제외한 노드 ex)A,B,C,D,E 이진 트리와 서브 트리 이진트리란 1.루트 노드를 중심으로 두개의 서브 트리로 나뉜다. 2.나뉘어진 두 서브 트리도 모두 이진 트리이어야 한다. 이 두 조건을 만족하는 트리이다. 위의 사진은 E가 2번 조건을 만족하지 못하니 이진 트리가 아니다라고 생각 할 수 있지만 사실 저 트리도 이진 트리가 맞다. E의 자식 노드로 J의 형제가 존재할 수 있기 때문에 공(empty) 노드로 남아 있다. 포화 ..
큐가 뒤로 넣고 앞으로 빼는 구조라면 덱은 앞,뒤로 넣고 앞,뒤로 뺄 수 있는 구조이다. 즉 양방향으로 넣고 뺄 수 있다. 그래서 덱이란 double-ended queue라는 의미로 스택과 큐의 특성을 모두 가지고 있다. 덱에서 구현되어야 할건 앞으로 넣기, 뒤로 넣기, 앞으로 빼기, 뒤로 빼기 덱은 이전의 스택, 큐와 달리 양방향 리스트로 구현한다. 앞뒤로 자유롭게 이동하기 위해 next와 prev로 방향을 정할 수 있다. 앞으로 넣기 스택과 비슷하게 head에 데이터를 추가한다. head앞에 새로운 데이터를 추가한 뒤 새로운 데이터를 head로 지정한다. 뒤로 넣기 tail 뒤에 새로운 데이터를 추가한 뒤 새로운 데이터를 tail로 지정한다. 앞으로 빼기 head의 next를 head로 지정한 뒤 원..
출처 : 윤성우의 열혈 자료구조 햄버거 가게에서 손님대기를 위한 큐를 만든다. 1시간 동안 고객이 15초당 1명씩 주문을 한다. 분당 4명*60분 = 240명 버거를 만드는 시간은 치즈버거 12초, 불고기버거15초, 더블버거 24초이다. 큐 넉넉하지 않아도 되고, 꽉 차는 상황이 발생해야 한다. 큐의 크기 30 : 안정적일 확률 50% 큐의 크기 50 : 안정적일 확률 70% 큐의 크기 100 : 안정적일 확률 90% 큐의 크기 200 : 안정적일 확률100% 안정적이라는 의미는 10회 시뮬레이션 결과 대기 고객 전부를 수용하는 것이 불가능한 상황이 몇회 발생했는가 이다. 50%는 10회중 5회 발생 했다는 의미이다. #include #include #include #define CUS_COME_TERM..
원형 큐를 구현했다. 원형 큐는 다음과 같이 f(front),r(rear)이 있는데 F는 시작부분을 나타내고 R은 끝을 나타낸다. 처음엔 f와r이 같은 곳에 위치해 있다. 그리고 데이터가 push되면 그곳에 데이터를 저장하고 r을 다음 칸으로 옮긴다. 데이터를 계속 저장하다 큐가 꽉차게 되면 f와 r은 다시 같은 곳에 위치하게 된다. 하지만 이런 상황은 맨 처음 큐가 비었을 때와 동일하기 때문에 큐가 꽉찬 상태인지 비어 있는 상태인지 구분할 수가 없다. 따라서 맨 처음 f를 비운 상태로 시작해야 한다. 데이터를 push할 땐 r 위치를 다음 칸으로 옮긴 뒤 r에 데이터를 push한다. 이런 식으로 f위치는 비워두고 r위치에 데이터를 push한다. pop을 해야할 땐 f위치를 다음 칸으로 옮겨 pop할 데..
12번 13번 14번 15번 16번 17번 18번 19번
18번문자 배열에 문자열을 입력받아 또 다른 문자 배열로 복사하는 프로그램을 작성하시오. 단, 문자열을 복사할 때 문자 배열의 원소를 가리키는 포인터를 이용하시오. 19번문자열을 2개 입력 받아서 두 문자열을 대소문자 구분하지 않고 비교해서 같은지 여부를 출력하는 프로그램을 작성하시오. 두 문자열을 비교할 때는 문자열 포인터 변수를 이용한다. 20번배열 원소를 가리키는 포인터를 이용해서 실수형 배열의 평균을 구하는 프로그램을 작성하시오. 21번정수 값을 하나 입력 받아서 정수형 배열의 모든 원소를 특정 값만큼 증가시키는 프로그램을 작성하시오. 22번입력받은 문자열을 역순으로 만드는 프로그램을 포인터를 이용해 만드시오. 23번입력받은 문자열 중 공백 문자의 개수를 출력하는 프로그램을 작성하시오.
정적(static) 변수에 대해 알아보자.정적이란 말은 '움직이지 않는다', '변하지 않는다' 와 비슷하게 사용된다.즉, 값이 변하지 않았으면 할 때 사용한다. 이렇게 te1 함수에서 arr1배열을 초기화 해준 후 0,1,2,3,4 대입, 리턴하였다.te2 함수에서는 arr2배열을 초기화 해준 후 0,1,2,3,4 대입, 리턴하였다. main문에서는 m_arr1에 arr1을 받고, m_arr2에 arr2를 받았다.그리고 이 둘을 더하는 반복문을 적었다.예상되는 결과는 0,2,4,6,8이겠지만 아니다. 이런 오류가 난다.지역 변수가 리턴되었다는 에러이다. 하지만 이걸 정적 변수로 바꿔주면 예상했던 결과가 나온다. 이렇게 변하지 않았으면 하는 변수앞에 static을 붙혀주면 된다. 다시 컴파일 해보면 잘 된다.
DES 구현하면서 배운 것 정리해봄. 먼저 배열을 리턴하는 방법이다.값을 하나하나 옮기는게 아니라 배열의 주소를 이용하는 방법이다. rand_mes 배열을 다른 함수에서나 다른 파일에서 사용하고 싶은 경우가 있다.이럴 땐 함수의 리턴형을 리턴형 * 으로 설정하면 된다. *을 달아줘서 포인터형임을 나타냈다. 포인터 형은 주소값을 담으니 배열의 주소값을 담는 함수라고 볼수 있겠다. 이렇게 main문에서 simplepbox를 포인터p에 담아줬다. 이 역시 배열의 주소를 담는 변수이다.이 p를 이용해 for문으로 출력하거나 다른 함수에 인자로 넘겨줄 수 있다.
- Total
- Today
- Yesterday
- PCA
- SOME/IP
- CAN-FD
- SVM
- 회귀
- automotive
- 크로스 엔트로피
- 케라스
- HTML
- many-to-one
- 이상탐지
- 딥러닝
- AE
- one-to-many
- 차량용 이더넷
- cuckoo
- problem statement
- Python
- AVB
- many-to-many
- porks
- 머신러닝
- 로지스틱회귀
- 단순선형회귀
- json2html
- 차량 네트워크
- AVTP
- Ethernet
- automotive ethernet
- 논문 잘 쓰는법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |