목록전체 글 (67)
ㅇTL
Tree ? * 여태는 다 Linear list ; 선형적으로 연결된 데이터에 유용 ! serially ordered data tree는 -> 계층구조 데이터 저장에 유용 ! hierarchically ordered data = 자료와 그 다음 자료의 위치 정보가 저장된 비선형의 자료구조 > 트리 성질 - 루트 노드 제외하고 모두 하나의 부모 노드를 가진다 - 여러개의 자식 노드를 가질 수 있다 - 한 노드에서 다른 노드로 가기 위한 경로가 유일하다 ! (-> 트리의 조건 !) > 쓰이는 곳 - file system - compiler - graphics - database (index) > 기본 용어 • root : top of the hierarchy • leaf / terminal node : 맨 ..
= OOP 의 기본 개념 (encapsulation & inheritance) = 어떤 class에서 새 class를 만드는 것 -> 자식 class는 부모 class의 모든 것들을 가지고 잇고 추가로 만들 수 있음 -> hierarchy 가 생긴다 ; 공통인 특징을 가지고 있고 어떤 애들은 각자 세분화된 특징을 가지고 있다 parent class = base class = super class -> child class = derived class - 상속은 반복될 수 잇다 -> child도 다른 애의 parent가 될 수 ㅇ - 부모측 = ancestor , 자식측 = descendent • 상속 하는 방법 public class classname extends parentName { } • inst..
Skip list = 정렬된 linked list에 대해 적용하는 알고리즘으로 빠른 검색 및 삽입 삭제를 가능하게 해줌 ! - dictionary ADT를 위함 - 평균적으로 O(log n)의 복잡도 가짐 (검색시간) - Randomized Data structure 임 ! = 랜덤성을 기초로 알고리즘을 구현하는 것. Perfect skip list -> 레벨이 정해져있음 -> 현재 레벨 원소개수의 절반을 다음 레벨에 추가! -> 레벨 1에서 하나더 올리는ㅇ ㅐ들은 레벨 1애들의 절반! 2의배수인애들올림(2번째노드마다 레벨1추가) -> 레벨2에서 하나더 올리는애들은 레벨2의 절반! 4의배수인 애들올림 (4번째 노드마다 레벨 1추가) !!이러캐! 현 2번째 노드 -> 레벨 1에 (한칸 올라감) (2n. -..
Linked list 저장되어 있는 위치 무관하게 저장되어 있고, 다음 변수를 순서대로 가리키고 있는 것 -> struct/class 같은 자료형으로 변수 data와 다음꺼 가리키는 pointer을 갖도록 함 - 첫번째에는 값 X. 그냥 헤더로 쓰인다 - 실제로 어디 저장되어 있는지는 무관 ! 인접할 필요 없음 - 각 linked list는 일련의 strucrture로 구성되어 있다 (인접필요는 xx) -> element & pointer를 가짐 - 마지막 친구는 다음 포인터로 NULL를 갖게 됨 코드들 * ElementType = 담을 데이터의 자료형 * Position = 해당 Node의 다음꺼 가리키는 포인터 인 듯? ( List, Position 둘다 노드 가리키는 포인터 ) Linked list..
Array = collection of indexed variables = 특별한 타입의 object • 선언 int[] arr = new int[5]; 이렇게 선언 !! -> 모든 값은 해당 자료형의 zero 값으로 초기화 됨 ( int : 0, float: 0, class: NULL) ( 거의 다 기본 값으로 자동 초기화가 되넹 머만안돼? local variable !) * 선언과 동시에 초기화도 가눙 -> int [] arr = { 1,2, 3};이렇게 가능 * 크기 고정 안하고 입력으로도 받을 수 있음 • 배열의 각 변수 = indexed variable • 배열은 object 이다 ! - length를 instance variable로 가짐 -> arr.length 이렇게 접근 (이건 metho..
Variables and Memory * 모든 값은 1바이트 이상 - 메모리는 데이텉를 byte 단위로 연속적으로 저장하는데 사용됨 - 메모리 저장 -> memory location - 데이터의 address = memory location의 첫번째 byte의 주소 primitive type (기본형 타입) -> 실제 값을 메모리에 저장함. 해당 주소에 해당 값을 저장한다 (당연) (변수에 할당된 memory location에 저장한다고 표현) class type -> 메모리에 memory address를 저장함 ! (reference를 저장한다 !) (변수에 할당된 memory location에 memory address/reference를 저장한다고 표현) - 클래스에 대한 데이터는 다른 곳에 저장되..
A. Review ! switch.. 이런거 다시 보기 &연산자 -> 주소 * 연산자 -> 그 주소가 가리키는 값 (dereferencing) (c에서 포인터 = 주소. *형변수=포인터=주소값) 배열 array array 예제 int* a[3] ->int형 pointer 3개를 담은 배열 배열의 이름 = 첫주소 (배열의 이름 변수 = 상수형태의 포인터) (arr = &arr) 배열 다음친구의 주소 = 첫주소 + 자료형 * 배열 선언시 int i=5; int a[i]; 안됨 !! (변수로 배열 선언하는거 안됨) -> 동적할당으로 하기 ! int *a=(int*)malloc(sizeof(int)*i); * 동적할당시 - dangling pointer 발생 가능 (허상 포인터) = 이미 free된 메모리 영역..
System life cycle programming 은 단순히 writing code 아님
* class = OOP(object-oriented programming 객체지향프로그래밍) 을 가능케 함 ! * 자바 프로그래밍은 - 모든 프로그램은 클래스이다 - 모든 도와주는 software은 class로 이루어져있다 - 모든 프로그래머가 정의한 type은 클래스이다! -> Classes are central to JAVA type - 변수 -> class type이기 가능(당연) -> 해당 변수는 object / instance 라고 부름 - class 내에도 class 변수 가능 class definition - data item과 method를 정의함 -> member 라고 불림 - 순서 무관 new -> 이걸로 선언 Classtype name = new Classtype() 이렇게 변수에 ..