자료구조 렉쳐노트 키워드 정리
아주 간단하게 키워드만 정리한 것이므로 내용이 많이 빈약합니다.
자료의 표현
- 디지털 시스템에서의 자료 표현
- 모든 형식의 자료를 2진수 코드로 표현하여 저장 및 처리
- 2진수 코드의 단위
- 8비트 = 2니블 = 1바이트
- n개의 비트로 \(2^n\) 개의 상태표현
- 수치자료의 표현
- 10진수의 표현
- 존 형식
- 팩 형식
- 2진수의 정수 표현
- 10진수의 표현
- 문자자료의 표현
- 문자에 대한 이진수 코드를 정의하여 사용
- 문자에 대한 이진수 코드표
- BCD코드: 6비트를 사용하여 문자표현
- EBCDIC코드: 8비트를 사용하여 문자표현
- ASCII코드: 7비트를 사용하여 문자표현
- 기타자료의 표현
- 논리자료
- 포인터 자료
- 문자열 자료
소프트웨어 생명주기
- 생명주기
- 요구분석 -> 시스템 명세 -> 설계 -> 구현 -> 테스트 -> 유지보수
알고리즘
성능분석 - 존 형식의 표현 - 공간 복잡도 - 알고리즘을 프로그램으로 실행하여 완료하기까지 필요한 총 저장 공간의 양 - 공간복잡도: 고정공간 + 가변공간 - 시간 복잡도 - 알고리즘을 프로그램으로 실행하여 완료하기까지의 총 소요시간 - 시간 복잡도 = 컴파일 시간 + 실행 시간 - Big O notation
배열 - 같은 자료형을 가진 자료들을 나열하여 메모리에 연속적으로 저장하여 만든 자료들의 그룹 - 인덱스 - 배열의 요소를 간단히 구별하기 위해 사용하는 번호 - C에서 인덱스는 항상 0부터 시작 - 모든 자료형에 대해서 배열로 구성 가능 - 구성 형태에 따라 1차원 배열, 2차원 배열, 3차원 배열, …
- 1차원 배열
- 자료형 배열이름[배열 요소의 개수]
- char c[100];
- int i[100];
- 자료형 배열이름[배열 요소의 개수]
- 2차원 이상의 배열
- 자료형 배열이름 [배열크기] [배열크기] … [배열크기]
포인터 - 변수의 메모리 주소값 - 포인터변수 - 주소값을 저장하는 특별한 변수 - 포인터 변수가 어떤 변수의 주소를 저장하고 있다는 것은 포인터 변수가 그 변수를 가리키고 있다는 의미 - 포인터 변수를 이용하여, 연결된 주소의 변수 영역을 엑세스 함
포인터 사용의 예 int i; int*ptr = &i; int 형 변수 i를 선언했을 때에 저장된 메모리 번지를 150번지라고 한다면, 변수 i의 주소를 포인터 ㅍ변수 ptr에 저장하면, ptrdpsms apahflwnth 150이 저장되므로, 포인터변수 ptr은 150번지의 변수i 를 가리키는 상태가 된다.
포인터 선언 형식 자료형 *포인터변수이름; 여기서 자료형은 포인터변수 자체의 자료형이 아니라, 포인터 변수에 저장할 주소에 있는 일반 변수의 자료형이다.
일반변수이름과 구별하여 변수이름 앞에 ’*’ 를 표시하여 포인터변수임을 나타낸다.
포인터 연산 - 주소 연산자: & - 변수의 주소를 구하기 위해 사용 - 변수앞에 &를 사용하여 그 변수의 주소를 사용 포인터변수 = & 변수; - 사용할 주소 영역의 변수와 포인터변수는 같은 자료형으로 선언
- 참조 연산자: *
- 저장된 주소에 있는 값(변수에 저장된 값)을 액세스 하는 연산자
- 사용방법1
- 지정한 값을 포인터가 가리키고 있는 주소에 저장
- *포인터 변수 = 값;
- 사용방법2:
- 포인터가 가리키는 주소에 있는 값을 변수에 저장
- 변수 = *포인터 변수;
구조체
- 구조체도 배열처럼 여러 개의 데이터를 그룹으로 묶어서 하나의 자료형으로 정의하고 사용하는 자료형
- 배열은 같은 자료형만을 그룹으로 묶을 수 있지만, 구조체는 서로 다른 자료형을 그룹으로 묶을 수 있으므로 복잡한 자료 형태를 정의하는데 유용하게 사용됨.
TBC…