- 당일 학습한 내용을 정리합니다.
- git bash 설치
- 기초 리눅스 명령어
- vim 사용법
- commit
- 개념
- 커밋을 언제 만드는 지
- 커밋 크기
- 저장소
- 개념
- 일반 폴더와 저장소의 차이
- 'git init' 명령어로 저장소 만들기
- 커밋 만들기
- 'git commit -m'
- 스테이징 영역
- 'git add' 명령어로 커밋에 포함 시키고 싶은 파일만 스테이징 영역에 추가
- Data Structure (자료구조)
-
chapter.3 순차 자료구조와 선형 리스트
-
순차 자료구조와 선형 리스트
- 선형 순차 리스트
- 선형 연결 리스트
- 읽기, 쓰기, 순차 액세스 같은 연산에는 효율적이지만, 삽입, 삭제 연산이 많이 필요한 경우 비 효율적
-
선형 리스트의 원소 삽입, 삭제
-
삽입
- 삽입하고자 하는 위치에 있는 원소를 뒤로 이동하여 공간 확보
- 확보된 공간에 삽입하고자 하는 원소 삽입
- 자리이동 횟수 : (n+1)개의 원소로 이뤄진 선형 리스트에서 k번 자리에 원소를 삽입하는 경우 -> (n-k+1)개의 원소를 이동 -> 마지막 원소의 인덱스 - 삽입할 자리의 인덱스 + 1
-
삭제
- 원소를 삭제하여 빈자리 만들기
- 원소를 삭제하며 생기 빈자리의 뒤에 있는 원소들을 한자리씩 앞자리 이동
- 자리 이동시 원소가 겹쳐서 덮어쓰기 되지 않도록, 앞으로부터 자리 이동
- 자리 이동 횟수 : (n-(k+1)+1) -> n-k
- 마지막 원소의 인덱스 - 삭제한 원소의 인덱스
-
-
선형 리스트의 응용
- 행렬
-
행(m)과 열(n)로 구성된 자료구조 -> m * n 행렬
-
정방 행렬 : m == n
-
전치 행렬 : m과 n을 서로 바꿔 구성한 행렬
-
희소 행렬 : 실제로 사용하지 않는 공간이 많아 공간의 활용도가 떯어지는 행렬
- 희소 행렬에 대한 2차원 배열 표현
-
- 0이 아닌 원소만 추출하여 <행번호, 열번호, 원소>쌍으로 배열에 저장
-
- 추출한 순서쌍을 2차원 배열에 행으로 저장
-
- 원래의 행렬에 대한 정보를 순서쌍으로 작성하여 0번 행에 저장
- 기억공만을 좀 더 효율적으로 사용하기 위해 희소행렬을 2차원 배열로 구성하는 방법
-
- 희소 행렬에 대한 2차원 배열 표현
-
다항식의 선형 리스트 표현
-
각 항에 계수, 변수, 지수로 구성된 항들로 구성된 식
- 계수 -> coefficient
- 변수 -> variable
- 지수 -> exponent
-
다항식의 특징
- 지수가 높은 항부터 내림차순으로 나열
- 다항식의 차수 -> 가장 큰 지수
- 다항식 항의 최대 개수 -> (차수 + 1)개
-
4x^3 + 3x^2 + 2의 선형 리스트 표현
- ((3, 4), (2,3), (0, 2)) -> 각 항을 지수아 계수의 쌍으로 묶어 세 개의 항을 선형 리스트의 원소로 정의 할 수 있음
-
-
- 행렬
-
-
chapter.4 연결구조와 연결 리스트
- 연결 자료구조와 연결 리스트의 이해
-
연결 자료 구조 (Linked Data Structure)
- NonSequencial Data Structure 이라고도 함
- 워소의 주소에 의해 순서가 연결되는 방식
- 크기 변경이 유연하고 메모리 사용이 효율적임
-
연결 리스트
-
단순 연결 리스트, 원형 연결 리스트, 이중 연결 리스트, 이중 원형 리스트 등이 있음
-
Node -> 연결 자료 구조에서 하나의 원소를 표현하기 위한 단위 구조
-
<원소, 주소>의 구조
-
데이터 필드
- 원소의 값을 저장
- 저장할 원소의 형태에 따라서 하나 이사으이 필드로 구성
-
링크 필드
- 다음 노드의 주소를 저장
- 포인터 변수를 사용하여 주소값을 저장
- 포인터, 링크, 참조(reference) 라고도 함
-
-
순차 자료구조와 연결 자료구조의 비교
-
순차 자료구조
- 배열을 이용해 구현
- 삽입, 삭제의 과정이 비교적 비효율적임
- 저장된 원소의 논리적인 순서와 물리적인 순서가 일치함
-
연결 자료구조
- 포인터를 이용해 구현
- 삽입, 삭제의 과정이 비교적 효율적임
- 저장된 원소의 논리적인 위치가 바뀌어도 물리적인 위치는 변하지 않음
-
-
연결 리스트
- 리스트 이름 -> 연결 리스트의 시작을 가리키는 포인터 변수
- 연결 리스트의 첫 번째 노드를 가리킴과 동시에 연결된 리스트 전체를 의미함
- 마지막 노드의 링크 필드 -> NULL 저장
- 각 노드의 필드에 저장된 값은 '.'연산자를 통해 액세스
- ex. week.data -> 데이터 필드에 저장된 값 / week.link -> 링크 필드에 저장된 주소
- 리스트 이름 -> 연결 리스트의 시작을 가리키는 포인터 변수
-
-
단순 연결 리스트
-
노드가 하나의 링크 필드에 의해서 다음 노드와 연결되는 구조
-
단순 연결 리스트에서의 삽입 연산
-
- 삽입할 노드를 준비한다.
-
- 새 노드의 데이터 필드에 값을 저장한다.
-
- 새 노드의 링크값을 저장한다.
-
- 리스트의 앞 노드에 새 노드를 연결한다.
-
-
단순 연결 리스트에서의 삭제 연산
-
- 삭제할 앞 노드의 앞 노드를 찾는다.
-
- 앞 노드에 삭제할 노드의 링크 필드값을 저장한다.
-
- 삭제한 노드의 앞 노드와 삭제한 노드의 다음 노드를 연결한다.
-
-
-
- 연결 자료구조와 연결 리스트의 이해
-