목록2-1/자료구조 (c) (14)
ㅇTL
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..
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 아님