공부(~2016)/알고리즘6 Double Ended Linked List Double Ended Linked List - "Double Linked" 와는 다름~ 더블 링크드는 각 노드가 preNode, nextNode의 링크를 모두 가지고 있는 것이고, 지금 여기서의 Double Ended는 리스트 전체에서 head 포인터 뿐 아니라 tail 포인터도 가지고 있는 것이다. - 배열로 구현할 때와 다르게, 최대 공간의 제약 없이 사용 가능 - 원소가 하나도 없을 때 뿐 아니라 디큐시에 원소가 하나만 있을 때도 고려 필요 - enqueue를 맨 앞, 맨 뒤, 원하는 위치에서 할 수 있도록 구현 (가장 첫 위치는 1으로 가정) - dequeue를 맨 앞, 맨 뒤에 할 수 있도록 구현 - 큐 순회하며 데이터 출력하는 printQueue 메소드도 구현 허허.. 복잡하다 제대로 한건지.. 2015. 4. 14. [알고리즘/C언어] 10진수를 2진수로 변환 #include int main(void){ int num=6, n[10], i=0; do { n[i]=num%2; num=num/2; i++; }while(num); for(i=i-1; i>=0; i--) printf("%d", n[i]); printf("\n"); return 0;}cs 수기로 구하는 방식대로 짠 것do while으로 한 이유는 ? input이 0 일때도 제대로 되게 하려고 그런 것 같음 #include int main(void){ int num=6, i=0, chk=0; for( i=sizeof(int)*8-1; i>=0; i-- ) { if( ( ((num>>i) & 1) && !chk) || i==0 ) chk=1; if(chk) printf("%d", (num>>i) & 1);.. 2013. 12. 22. [알고리즘/C언어] 최소공배수 최대공약수 #include int gcd_func(int x, int y){ if(y==0) return x; else return gcd_func(y, x%y);} int lcd_func(int x, int y){ int i; for(i=1; inum2) // num1 2013. 12. 14. [알고리즘/C언어] 문자열 거꾸로 출력하기 1. 그냥 출력하기 혹은 추가 배열에 저장하기 #include#include int main(void){ char a[] = "My Name Is Soy Lee"; int i, j; printf("%s\n", a); for(i=strlen(a)-1; i>=0; i--) { if(a[i]==' ') { for(j=i+1; a[j]!=' ' && a[j]!='\0'; j++) printf("%c", a[j]); printf(" "); } else if(i==0) { for(j=i; a[j]!=' '; j++) printf("%c", a[j]); } } printf("\n"); return 0;}Colored by Color Scriptercs 2. 추가 배열 없이, 기존 배열에서 위치 바꾸기 #include.. 2013. 12. 14. [Java] 팩토리얼 팩토리얼 public class Factorial { public static int factorialByLoop(int n) { int sum = 1; for(int i=n; i>1; i--) sum = sum*i; return sum; } public static int factorialByRecursion(int n) { if(n==1) return 1; return n * factorialByRecursion(n-1); } public static void main(String[] args) { System.out.println( Factorial.factorialByRecursion(5) ); System.out.println( Factorial.factorialByLoop(5) ); } } 재.. 2013. 5. 22. [Java] 피보나치수열 with memoization 피보나치 수열 1, 1, 2, 3, 5, 8, 13, 21, ... public class Fibo { public static long fiboByRecursion(long n) { if (n == 1 || n == 2) return 1; return fibo(n-1) + fibo(n-2); } public static long fiboByLoop(long n) { if (n == 1 || n == 2) return 1; long sum = 1; long prev = 1; long temp; for(long i=3; i 0) return memo[n]; if (n == 1 || n == 2) return memo[n] = 1; return memo[n] = fibo(n-1) + fibo(n-2); } .. 2013. 5. 9. 이전 1 다음