목록c (24)
without haste but without rest
미로 문제 main #include #include #include "stack.h" #define WALL '1' #define ROAD '0' #define PATH '#' #define GOAL 'G' #define VISITED '.' #define MAX_SIZE 20 char maze[MAX_SIZE][MAX_SIZE]; int maze_size = 0; void init_maze() { printf("Maze Size >> "); scanf_s("%d", &maze_size); for (int i = 0; i < maze_size; i++) { printf("%d행: ", i); scanf_s("%s", &maze[i], sizeof(char) * maze_size + 1); } } void..
동적 배열 스택 #include #include /* 동적 배열 스택 완성 코드 추가 1. void delete_stack 2. void print_stack 3. 구조체를 포인터로 선언 */ typedef int element; // element is data tpye of stack, it is easy to adjust code typedef struct { element* stack; int top; int capacity; } stackType; void init_stack(stackType* s); int is_full(stackType* s); int is_empty(stackType* s); void push(stackType*, element item); element pop(stack..
구조체를 활용하는 스택 #include #include #define MAX_SIZE 5 /* 구조체를 활용한 배열 스택 단점 1. 배열의 크기를 변경할 수 없다. 2. 메모리 사용측면에서 비효율적이다. 해결 방법 1. 동적 배열 스택 */ typedef int element; // element is data tpye of stack, it is easy to adjust code typedef struct { element data[MAX_SIZE]; int top; } stackType; void init_stack(stackType* s); int is_full(stackType* s); int is_empty(stackType* s); void push(stackType* s, element i..
전역변수를 사용하는 스택 #include #include #define MAX_SIZE 5 /* 전역 변수를 사용하는 배열 스택 단점 1. 전역 변수를 많이 사용한다. 해결 방법 1. 구조체를 활용해서 전역 변수 사용을 줄인다. */ typedef int element; // element is data tpye of stack, it is easy to adjust code element stack[MAX_SIZE]; int top = -1; int is_full(); int is_empty(); void push(element item); element pop(); element peek(); int main(void) { for (int i = 1; i
#define _CRT_SECURE_NO_WARNINGS #include void move(int n, char from, char to) { printf("원판%d을 %c에서 %c로 이동합니다.\n", n, from, to); } void hanoi_tower(int n, char from, char tmp, char to) { if (n == 1) move(n, from, to); else { hanoi_tower(n - 1, from, to, tmp); move(n, from, to); hanoi_tower(n - 1, tmp, from, to); } } int main(void) { hanoi_tower(3, 'A', 'B', 'C'); return 0; }
Reference - https://plas.tistory.com/129 진짜 이차원배열처럼 malloc하는 방법 이차원배열을 어떻게 malloc하느냐는 질문을 받았는데, 쉽지 않은 주제네요. 이차원 배열을 함수 매개변수로 넘기는 방법을 먼저 살펴보겠습니다. C 언어에서 2차원 배열은 포인터의 배열이고 각 포인터는 COLS칸.. plas.tistory.com #include #include int main(void) { /* 진짜 2차원 배열처럼 구현하기 1. 배열 선언 (5 x 3 배열) 2. 헤드 포인터 선언 3. 헤드 포인터 연결 4. 데이터 입력 5. 데이터 출력 */ int count = 0, i, j; int r = 5, c = 3; int len = sizeof(int*) * r + size..
C 로 그래프를 구현하는 중에 이해를 못하는 상황이 발생했다. 파이썬은 딕셔너리 구조를 이용해서 정말 쉽게 구현했고, 메모리 관리를 따로 안 해줘도 되니까 구조 자체에만 집중할 수 있었다. 온라인 강의를 보면서 굉장히 비효율적인 공부를 하다가, 혼자 그래프를 그려보고 직접 생각하면서 이를 코드로 구현하는 게 역시나 정석인 것 같다고 판단했다. 결론: 노트에 구조를 그려보고, 여기에 맞춰서 코드를 짜는 게 오래 남는다. 코드로 그래프를 구현한다는 것은 사람이 눈으로 인식하는 것과는 차이가 있다. 그래프 구조의 특징은 노드가 가지는 숫자가 노드의 개수보다 크지 않고, 중간에 비는 숫자가 없다. (만약 노드가 갖는 숫자가 1부터 순차적인 숫자가 아니라 중간에 훅 건너 뛰는 경우는 배열의 크기를 늘리는 방법을 ..
Reference - C언어 코딩도장 1. 서식 지정해서 문자열 쓰기 - fprintf #define _CRT_SECURE_NO_WARNINGS #include int main() { FILE* fp = fopen("hello.txt", "w"); fprintf(fp, "%s %d\n", "Hello", 123); fclose(fp); return 0; } * r, w, a 옵션 등은 다른 언어들과 같다. * 파일을 포인터로 얻어서 fprintf에 값으로 전달한다. 2. 서식 지정해서 문자열 읽기 - fscanf #define _CRT_SECURE_NO_WARNINGS #include int main() { char s1[10]; int num1; FILE* fp = fopen("hello.txt", "..