목록알고리즘 (5)
악어새와 좀개구리밥

알고리즘 공부 기록을 꾸준히 남기기 위해 최근 GitHub을 다시 시작했다. 오랜만에 git을 사용하는 것이라 그런지 git push할 때 오류가 발생했다. error: failed to push some refs to URL. BOJ 폴더를 업로드할 때 오류가 난 것인데, 내가 바꾼 것이 없는데 왜 이런 오류가 날까 잠시 생각을 해보았다. 우선 Pull Request를 먼저 해보았는데, 그러면 그렇지 내가 브라우저에서 README를 만들어놓고 잊어버렸던 것이다. Pull Request를 먼저 진행하고 그 다음에 Push를 하면 오류가 해결이 될 수 있다. 혹은, 강제로 Push를 하는 방법도 있다고 하는데.. 위험해 보이니 그 방법은 모른 척하겠다. 간단하게 해결된 문제지만, 또 또 또 나는 이런 문제..
C언어에서 내장 함수로 제공하는 qsort는 네 개의 매개변수 입력이 있어야 한다. //void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) qsort(my_elem_list, elem_list_size, sizeof(ELEMENT), myCmpfun); base: 리스트의 주소 nitems: 정렬하려고 하는 리스트의 크기 size: 정렬하려고 하는 구조체/자료형의 크기 (*compar): 크기 비교 함수 크기 비교 함수는 다음과 같이 구현할 수 있다. (in non-Decreasing Order) int myCmpfun(const void* a, const void* b) { ELEMENT*..
#include #include #include #define MAX_ARRAY_SIZE 500 void swap(int* a, int* b) { int temp = *b; *b = *a; *a = temp; } int main() { int i, j; int ar[MAX_ARRAY_SIZE] = { NULL, }; //Array에 data 저장 for (i = 0; i < MAX_ARRAY_SIZE; i++) ar[i] = i + 1; //Fisher-Yates Shuffle srand((unsigned)time(NULL)); for (i = 0; i < MAX_ARRAY_SIZE - 2; i++) { j = rand() % MAX_ARRAY_SIZE; swap(&ar[j], &ar[i]); } for..
source code #include #include #include #include #pragma warning(disable:4996) #define TESTSIZE 50 #define MAXNAMESIZE 30 /*---Defining Structure---*/ typedef struct { unsigned int data; char name[MAXNAMESIZE]; }my_struct; /*---Structure List as Global for EZ Access---*/ my_struct my_list[TESTSIZE]; /*---Function Declaration---*/ void init_list(); int my_struct_compfunc(const void*, const void*);..
구조체를 사용한 이중연결리스트 정렬 구현 데이터 push와 pop이 용이하다는 장점이 있어서 Dummy Node를 포함한 이중 연결리스트를 생성했다. 1. 구조체 선언 typedef struct Node { int data; struct Node* prev; struct Node* next; }Node; typedef struct List { int count; Node* head; Node* tail; bool sorted; }List; 구현에 목적을 두기 위해 정수형 데이터 한 개만 포함하는 노드를 선언했고, 더미노드를 사용하기 위해 리스트 구조체는 head, tail을 포함해서 선언했다. 리스트의 크기를 저장하는 count변수도 포함했다. 탐색할 때 정렬이 되어있는지 확인하기 위해 stdbool 라..