본문 바로가기

C언어

(61)
[자료구조] ch 01 리스트 (1) 1.1 리스트 ADT 1.1.1 리스트의 개념 - 목록 형태로 이뤄진 데이터 형식 - 노드(node) : 리스트의 목록을 이루는 개별 요소 - 머리(head) : 노드 목록에서 첫 번째 노드 - 꼬리(Tail) : 노드 목록에서 마지막 노드 - 리스트의 길이는 헤드부터 테일까지 이르는 노드 개수와 같음 1.1.2 리스트와 배열 비교 - 배열은 생성하는 시점에 반드시 배열의 크기를 지정해줘야 하고 생성한 후에는 그 크기를 변경할 수 없음 - 리스트는 배열처럼 데이터 집합 보관 기능을 가지면서도 배열과 달리 유연하게 크기를 바꿀 수 있는 자료구조 1.2 링크드 리스트 링크드 리스트(Linked List) - 노드를 연결해서 만든 리스트 - 링크드 리스트의 노드는 데이터를 보관하는 필드, 다음 노드와 연결고리..
[c언어] 두 수의 연산값 비교하기 1. 정수 a,b 문자열 반환(sprintf) 2. a+b 정의 (strcpy, strcat 함수) 3. a+b를 정수로 변환한 값과 2*a*b 대소 비교 #include #include #include int solution(int a, int b) { int answer = 0; char stra[10], strb[10]; sprintf(stra, "%d", a); sprintf(strb, "%d", b); char* sa = (char*)malloc(sizeof(char)*10); char* sb = (char*)malloc(sizeof(char)*10); strcpy(sa,&stra); strcat(sa,strb); int ia = atoi(sa); if((a10000)) return -1; if..
[c언어] 더 크게 합치기 1. 정수 a,b 문자열 변환 (sprintf ) 2. a+b, b+a 정의 (strcpy, strcat 함수 ) 3. a+b, b+a를 다시 정수로 변환해서 대소 비교(atoi 함수) #include #include #include #include int solution(int a, int b) { int answer = 0; char stra[10], strb[10]; sprintf(stra,"%d",a); sprintf(strb,"%d",b); char* sa = (char*)malloc(sizeof(char)*10); char* sb = (char*)malloc(sizeof(char)*10); strcpy(sa, &stra); strcat(sa, strb); strcpy(sb, &strb); st..
[c언어] 문자열 곱하기 #include #include #include char* solution(const char* my_string, int k) { int len = strlen(my_string); char* answer = (char*)malloc((len*k+1)*sizeof(char)); for(int i = 0; i < k; i++) { for(int j = 0; j
[c언어] 문자 리스트를 문자열로 변환하기 #include #include #include char* solution(const char* arr[], size_t arr_len) { char* answer = (char*)malloc((arr_len+1)*sizeof(char)); for(int i=0; i
[c언어] 문자열 섞기 #include #include #include char* solution(const char* str1, const char* str2) { int s1 = strlen(str1); char* answer = (char*)malloc((2*s1+1)*sizeof(char)); int j = 0; for(int i=0; i < s1; i++) { answer[j++] = str1[i]; answer[j++] = str2[i]; } answer[j] = '\0'; return answer; }
[c언어] 문자열 겹쳐쓰기 #include #include #include char* solution(const char* my_string, const char* overwrite_string, int s) { int m = strlen(my_string); int o = strlen(overwrite_string); int j = 0; char* answer = (char*)malloc(sizeof(char)*m); answer = my_string; for(int i=s; i < s+o; i++) { answer[i] = overwrite_string[j]; j++; } answer[strlen(my_string)] = '\0'; return answer; }
10-1 장 해시법 (2) 1. 오픈 주소법 이해하기 오픈 주소법(open addresing) - 충돌이 발생했을 때 재해시(rehashing)를 수행하여 비어 있는 버킷을 찾아내는 방법 - 닫힌 해시법(closed hashing) - 연결 탐사법(linear probing) : 빈 버킷을 만날 때 까지 재해시 //요소의 상태 typedef enum { Occupied, Empty, Deleted }Status; //요소 typedef struct { Member data; //데이터 Status stat; // 요소의 상태 }Bucket; //해시 테이블 typedef struct { int size; //해시 테이블의 크기 Bucket *table; //해시 테이블의 첫 번째 요소에 대한 포인터 }ClosedHash; 1.1 ..