목록Homework (40)
without haste but without rest
#include #include #define MAX_SIZE 5 /* 선형 큐 디큐로 인자를 빼는 경우 앞 공간을 활용하기가 쉽지 않다. 코드에서 디큐로 3까지 뽑았는데, 엔큐를 하면 오버플로우가 난다. 큐 배열에 데이터는 아직 존재하기 때문이다. 따라서 원형 큐로 변경하여, 빠져나간 공간을 재활용할 수 있게 만든다. */ typedef int element; typedef struct { element queue[MAX_SIZE]; int front, rear; } QueueType; void error(char* msg) { fprintf(stderr, "%s\n", msg); // remind this point exit(1); } void init_Queue(QueueType* q) { q->f..
sqlite3 라이브러리 메커니즘 1. 파일 연결 ( sqlite3.connect() ) 2. 커서 객체 생성 ( conn.cursor() ) 3. 커서 객체로 작업 ( conn.execute() ) 4. 데이터 인출 (fetchall() ) // 옵션 따라서 fetch 시리즈가 있는 듯 import sqlite3 sqlite_file = './data/boston.db' # connecting to the database file conn = sqlite3.connect(sqlite_file) # initialize a cursor obect cur = conn.cursor() # define a traversing search cur.execute("SELECT * FROM boston LIMIT 5..
후위 표기 계산 main (기본 코드) #include "stack.h" #include #include int eval(char* value) { int n = strlen(value); int v1, v2; char ch; stackType s; init_stack(&s); for (int i = 0; i < n; i++) { ch = value[i]; if (ch != '+' && ch != '-' && ch != '/' && ch != '*') { ch = ch - '0'; // atoi push(&s, ch); } else { v2 = pop(&s); v1 = pop(&s); switch (ch) { case '+': push(&s, v1 + v2); break; case '-': push(&s..
괄호 매칭 main #include "stack.h" #include #include int check_matching(const char* input) { int i, n = strlen(input); char ch, open_ch; stackType s; init_stack(&s); print_stack(&s, input); for (i = 0; i < n; i++) { ch = input[i]; switch (ch) { case '(': case '{': case '[': push(&s, ch); print_stack(&s, input + (i + 1)); // * input + (i + 1) 은 input[i] 이후의 문자를 모두 출력 break; case ')': case '}': case ']..
미로 문제 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