프로그래밍/간단메모 16

[자료구조]순환_오답

1.팩토리얼을 계산하는 순환호출 함수 factorial 에서 매개 변수로 5를 주었다면 최대 몇 개의 factorial함수의 활성 레코드가 동시에 존재할 수 있는가?: 최대 5개의 활성 레코드가 존재할 수 있다. 2.순환 호출을 하였을 경우 활성 레코드들은 스택에 저장된다.하나의 함수가 호출할 수 있는 순환 호출의 개수는 스택이 허용하는 한도까지 다. 3. 활성레코드에 저장되는 것은 매개변수의 값, 함수 호출이 끝나고 복귀할 주소, 지역변수이다. 4. 순환호출이 가능한 언어는 C, Pascal, Java언어 이다. 14. 다음을 계산하는 순환적인 프로그램을 작성하라.1+2+3+...+n 1234int sum(int n){ if(n==1) return 1; else return (n+sum(n-1));}c..

[자료구조]04.연결리스트_2

01. SetSortRule 함수: 정렬기준이 되는 함수를 등록 comp: SetSortRule함수를 통해 전달된 함수정보 저장을 위한 linkedlist의 멤버 SInsert 함수: comp에 등록된 정렬기준을 근거로 데이터를 저장한다. = SetSortRule함수가 호출되면서 정렬의 기준이 리스트의 멤버 comp에 등록되면, SInsert함수 내에서는 comp에 등록된 정렬의 기준을 근거로 데이터를 정렬하여 저장한다. 02. SInsert: 중간에 노드를 삽입 1 2 3 4 5 void SInsert(List *plist, LData data){ Node *newnode = (Node*)malloc(sizeof(Node)); Node *pred = plist->head; newnode->data = ..

[자료구조]04.연결리스트(Linked List)

0204~0206 복습. 01. 배열: 순차접근(idx)이 가능하지만 크기가 결정되면 변경 못하는 자료구조. Q. 요청시마다 메모리할당 하고싶은데? A. malloc으로 가능, 그렇지만 관리는 불가. =연결리스트(ADT) A - B - C - D - E --->[ + ] A에 접근이 되면 C도 접근이 가능하다.(순차적으로 접근이 가능하다) 또 확장도 가능함. *malloc은 메모리할당방법(동적할당), 연결리스트는 관리방법이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 typedef struct_node{ int data; // 데이터 담을공간 struct _node *next; //연결의 도구 } Node; int main(void){ Node *head = NULL; Node *tai..

[자료구조] 배열을 이용한 리스트구현

01. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 void ListInit(List *plist){ (pdata ->numOfData) = 0; (pdata ->curPostion) = -1; //-1은 아무런 위치도 참조하지 않았음을 의미. } void LInsert(List *plist, LData data){ //#define LIST_LEN 이 있음. if(LIST_LEN numOfData){ return; //puts("저장이 불가능합니다."); } plist->arr[plist->numOfData] = data; (plist->numOfData]+=1; } Colored by Color Scripter cs 02. 1 2 3 4 5 6 7 8 9 10 11 12 13 14..

[자료구조]재귀함수

1. 호출관계 를 중요시할것. 피보나치 수열. 0 1 1 2 3 5 8 13 21 34 55 . . . n=1 -> 0, n=2 -> 1 :: 0번째와 1번째는 결정되어 있다. n = otherwise -> fib(n-1)+fib(n-2) :: n번째 수는 n-1번째수 + n-2번째 수 [1_ex] int Fibo(int n){ if(n==1) return 0; else if(n==2) return 1; else return fib(n-1)+fib(n-2); } void main(){ int i; for(i = 0; i3이므로 탐색범위를 인덱스 기준 0~3으로 제한, (0+3)/2 = 1.5로 나머지는 버린다. 3.idx[1]에 저장된 값이 3인지 확인한다. -아니다. *세번째 시도 1 2 3 7 9 1..