모든 리스트 연산은 연산 후 바뀐 리스트의 head를 리턴. 그러면 head를 함수 내에서 굳이 더블 포인터로 받아서 변경할 필요 없음.
퀵소트는 아래 두가지 연산이 중요PivotPartition두가지 구현 방법 브라이언 커니핸(무려 K&R의 K에 해당하는 사람)이 쓴 책 프로그래밍 수련법책에서 참고한 코드인데, 구현이 매우 간단하고 좋다. 비교 대상의 값을 맨 앞으로 보내고 풀이하는 방법.pivot기준
heapify의 sift down동작과 sift up동작을 재귀함수로 구현함으로써, heapify, heap_push, heap_pop동작을 간결하고 아름답게 구현할 수 있었다. NOTE: must check l_idx < h_size in advance.So,i
heap의 특정값을 수정할 수 있는 heap자료구조.a\[] 라는 배열이 주어지고, heap\[]으로 변환. heap\[]상에 있는 ai에 해당하는 값을 바로 수정하고, heap 을 유지할 수 있는 자료구조. heap0값이 아니더라도 수정이 가능.가령 배열 a0,
assert() 로 유닛테스트 수행. struct stack에 함수 포인터를 추가. stack_init()함수에서 콜백함수 등록.
숫자를 만나면 스택에 push연산자를 만나면 스택에서 두개를 pop해서 계산, 결과를 다시 push최종 결과는 모두 마친 뒤 스택에 남아있는 값
lookup() 함수가 search 및 create를 동시에 수행. search하는 동작을 각 함수에서 두번할필요없이 하나로 가능. hash collision을 위해 linked list 로 chainnig 구현
https://leetcode.com/problems/basic-calculator/이문제에 대한 답인데, 음수의 경우가 아니면 해결된다. ("-2+ 1" 는 풀질 못함)후위 표기 변환법은 이 알고리즘을 참고https://ko.wikipedia.org
초기화한 size - 1개 만큼 데이터를 큐에 삽입할 수 있다.(size 가 4 이면 해당 큐에는 3개까지 데이터를 넣을 수 있다.)큐가 비어 있다면 tail == head큐가 가득 찼다면 tail + 1 == head단 tail과 head값을 증가시킬때, % size
주어진 배열에 target값이 있다면 인덱스 리턴, 없다면 -1리턴https://leetcode.com/problems/binary-search/submissions/사내테스트에서 문제 다 풀었는데, 시간복잡도 개선용으로 binary search를 구현못해서
malloc(할당할 갯수 \* 자료구조 크기)calloc(할당할 갯수, 자료구조 크기)realloc(포인터, 변경할 사이즈)realloc으로 다이나믹하게 array 사이즈를 변경시키는 Dynamic Array구현 가능.vector의 push_back() 구현. 약간 O