개발/자료구조

1. SetSortRule 함수와 멤버 comp1. SetSortRule 함수의 호출을 통해서void SetSortRule(List* plist, int (*comp)(LData d1, LData d2)){ plist -> comp = comp;} 2. 멤버 comp가 초기화되면typedef struct _linkedList{ Node* head; Node* cur; Node* before; int numOfData; int (*comp)(LData d1, LData d2);} LinkedList; 3. 정렬 관련 SInsert 함수가 호출된다.void LInsert(List* plist, LData data){ if(plist->comp == NULL) ..
1. 단순 연결 리스트의 ADT와 구현/* 추가된 함수 */void SetSortRule(List* plist, int (*comp)(LData d1, LData d2));- 리스트에 정렬의 기준이 되는 함수를 등록한다.인자로 전달이 가능한 함수의 예는 아래와 같다.int WhoIsPrecede(LData d1, LData d2){ if(d1  새 노드를 연결 리스트의 머리에 추가하는 경우장점 : 포인터 변수 tail이 불필요하다.단점 : 저장된 순서를 유지하지 않는다. 새 노드를 연결 리스트의 꼬리에 추가하는 경우장점 : 포인터 변수 tail이 불필요하다.단점 : 저장된 순서를 유지하지 않는다. SetSortRule 함수 선언에 대한 이해 (정렬)void SetSortRule(List* plist..
1. 연결 리스트의 개념적인 이해동적할당(malloc( ), free( ) 함수)을 진행한다.(프로그램 실행 중간에 할당한다.)동적할당이란?프로그램 실행중인 런타임에 메모리 공간을 확보한다.Ex). 1024byte 메모리를 할당하고 1byte를 사용한다면, 비효율적이다. 필요한 만큼 메모리 공간을 확보하고 메모리 공간을 해제하는 것이 동적할당의 장점이다. 1.1 LinkedRead.c#include #include typedef struct _node{ int data; struct _node * next;} Node;int main(void){ Node * head = NULL; // NULL 포인터 초기화 Node * tail = NULL; Node * cur = NULL; Node * newN..
1. 추상 자료형: Abstract Data Type추상 자료형 간단하게 ADT 를 의미한다.ADT의 주된 정의는 아래와 같다.구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지 나열한 것 전등의 추상 자료형을 정의해 본다면,ADT of Lamp- Data : Power, LeftButton, RightButton (전원, 왼쪽 버튼, 오른쪽 버튼)-operation                   : PowerOn()                    전원을 키다.                   : PowerOff()                     전원을 끄다.                   : LeftButtonClick()            왼쪽 버튼 클릭         ..
1. 함수의 재귀적 호출의 이해재귀함수란 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다.void Recursive(void){ printf("Recursive call"); Recursive();}위의 소스코드를 확인하면, 함수의 종료가 이루어지기 전, 다시한번 Recursive 함수를 호출하는 것을 볼 수 있다.즉, 계속해서 호출이 된다는 것이다.하지만, 재귀 함수의 문제는 계속해서 호출되는 문제가 있다. 이런 문제는 Recursive 함수에 '재귀의 탈출조건' 이 없다는데 원인이 있다.#include void Recursive(int num){ if(numRecursive call! 3Recursive call! 2Recursive call! 1여기서의 재귀의 탈출 조건은 if 문이 담당하고..
1. 자료구조(Data Structure) 에 대한 기본적인 이해자료구조는 '데이터의 저장'을 담당한다."정수 저장을 위해서 int 변수를 선언하는 것""책 대여 기록을 저장하기 위한 목적으로 구조체를 정의하는 것"모두 데이터를 표현 및 저장하는 하나의 방법이므로, 자료구조의 일종으로 볼 수 있다. 2. 알고리즘의 성능분석 방법자료구조와 알고리즘을 분석하고 평가할 수 있어야한다.그렇기 때문에, 알고리즘을 평가하는 두 가지 요소는 아래와 같다."어떤 알고리즘이 특정 상황에서 빠르거나 느린지""어떤 알고리즘이 특정 상황에서 메모리를 적게 or 많이 사용하는지"속도에 해당하는 알고리즘의 수행시간 분석결과를 가리켜 '시간복잡도(time complexity)'※ CPU에게 얼마나 부담을 주는가?메모리 사용량에 대..
grinidia
'개발/자료구조' 카테고리의 글 목록