반응형

전체 글 805

이진탐색트리 자동 생성 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 루트 노드를 50으로 넣은 후, rand()%100 으로 노드를 계속해서 생성해나갑니다. 생성된 노드보다 큰값이면 우, 작으면 좌측 노드로 향하며 우측, 또는 좌측노드가 NULL이라면 새로 생성된 노드는 자식노드가 되며, NULL이 아닐 경우에는, 다시 크기 비교를 반복합니다. #include #include using namespace std; class node{ private: int value; public: node(int val){ value=val; } int getValue(){ return value; } node* left; node* right; ~node(){ delete this; } }; ..

탐색 : 이진탐색

/* * http://sosal.tistory.com/ * made by so_Sal */ 이진탐색은 정렬이 되어있는 데이터 배열에 사용할 수 있습니다. 찾기를 원하는 value를 받고, 배열의 정 가운데 값과 비교하여 크면, 가운데와 맨 끝의 중간을 비교, 작으면 가운데와 처음을 비교합니다. 이렇게 반씩 줄여나가면서 데이터를 찾는 과정이 binary search 입니다. 그럼 간단한 함수 예제를 볼까요? #include #include #include using namespace std; int BinarySearch( int *arr, int size , int object){ //arr은 정렬된 데이터의 array, object는 찾고자 하는 수의 값을 뜻합니다. int left = 0; int r..

링크드리스트 :: 추가,삭제,출력,찾기,값변경,위치변경,종료

/* * http://sosal.tistory.com/ * made by so_Sal */ 추가된것은 값 변경, 위치변경 정도? 입니다. 단순히 복사생성자를 사용하여 node끼리 swap을 하는것입니다. node a(1),b(2); a = b; (는 불가능) #include using namespace std; class node{ private: int value; public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } node(node &a){ value = a.value; // 복사생성자를 이용해 노드 초기화 } int getValue(){ // 값을 얻어오기 위한 함수 return value; } void getNode(node &a){ valu..

C-Library qsort() 퀵 정렬 함수

/* * http://sosal.tistory.com/ * made by so_Sal */ #include void qsort(void *base, // 데이터 집합 배열의 주소 size_t nmemb, // 데이터 요소의 개수 size_t size, // 각 배열 하나 원소의 크기 int(*compare)(const void *, const void *) //비교 함수에 대한 포인터 ); (gcc man-page 내용이므로, visual studio 함수 원형의 매개변수 이름과 다를 수 있습니다.) base : 배열의 이름, 즉 데이터 집합 배열의 주소를 받는 매개변수 nmemb : 배열에서 정렬하고자 하는 원소의 갯수 size : 각 원소의 자료형 크기 여기까진 쉬운데, 마지막 매개변수는 뭘까요? 비..

트리 : level에 따른 이진트리 자동 생성 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 이진트리를 짜봤습니당. 워낙 유명한 자료구조라 인터넷에서 쉽게 구조체나 생성함수, 삭제함수 등을 구할 수 있었지만 레벨에 따른 트리를 생성할 수 있도록 만들어놓은 함수는 안보이더라구요, 그래서 간단하게 만들어봤습니다 ㅎㅎ 각 노드의 value는 char형태로 이루어져있는데, default parameter를 통해 자동으로 B부터 CDE~~~쭉쭉 만들어지게 해놨습니다. 숫자를 원하신다면 class의 value 자료형을 바꾸고, default parameter값만 바꿔주시면 되겠죠? #include using namespace std; class node{ private: char value; public: node(..

트리 : 좌우 child를 가지는 트리 만들기

/* * http://sosal.tistory.com/ * made by so_Sal */ 트리도 딱히 어렵진 않습니다. 다만 링크드리스트 (연결리스트)의 구조가 복잡하게 연결되어있을 뿐 입니다. 우리의 디렉토리 풀더나, 회사 구조도 등이 트리로 구성되어있습니다. 주석을 찬찬히 살펴보면서 소스를 보시면 금방 이해하실 수 있을거라 생각합니다 ㅎㅎ. #include #include using namespace std; class node{ private: char value[20]; public: node(char* name){ strncpy(value,name,19); } // 생성자 함수를 이용해 빠르게 value 정의 char* getValue(){ return value; } // value를 리턴하..

큐 : 링크드 리스트로 구현한 간단한 큐

/* * http://sosal.tistory.com/ * made by so_Sal */ 연결리스트로 간단하게 `큐`를 구현해보려고 합니다. 밑에 스택에서 사실 소스를 그대로 재탕해먹었습니다. push부분과 pop 부분이 상반된다는 점 빼고는 간단한 큐와 스택이 다른점은 없으니..^^; #include using namespace std; class node{ private: char value; //간단하게 알파벳 저장하는 스택의 노드~ public: node(int a){ // 생성자 함수를 이용하여 value 초기화 value = a; } char getValue(){ // 값을 얻어오기 위한 함수 return value; } node *next; // 다음 노드를 가리킬 포인터 node *pre..

반응형