본문 바로가기

프로그래밍 언어들

단일 쓰레드 병합 정렬(Merge sorting) #include #include #include #include #include #define CHECK_END -1 static int *array = NULL; static void div_array(int *, int, int);static void merge_sort(int *); static void init_array(int size){int count = 0; array = (int*)malloc(sizeof(int) * size); for(count = 0 ; count < size ; count ++){array[count] = rand()%size + 1;}} static void display_array(int size){int count = 0; for(count = 0 ; coun.. 더보기
20141127_C언어 하트 피하기 게임 #include #include #include #include #include #define MAP_X 30 // 맵의 가로#define MAP_Y 22 // 맵의 세로 #define HEART MAP_X-1 // 최대 하트의 갯수 #define LEFT 75 // 왼쪽#define RIGHT 77 // 오른쪽 #define DEAD 0 // 죽었을 경우#define CLEAR 1 // 클리어 했을 경우 void endGame(int); // 게임이 끝났을 경우void init_field(void); // 기본 맵의 테두리 출력void init_game(void); // 게임을 초기화한다void start_game(void); // 게임을 시작한다void print_heart(void); // 화면에 .. 더보기
20141124_스택(stack)을 이용한 수식의 중위 -> 전위 표기법 변환 이번 소스는 자료구조 스택(stack)을 이용해서 중위 표기법을 전위 표기법으로 전화하는 프로그램 소스입니다. #include #include // 스택 노드를 위한 구조체 선언 typedef struct node{ char data; struct node *pre; }NODE; // 하나의 새로운 노드를 생성해주는 함수 NODE* createNode(char data) { NODE *temp = (NODE*)malloc(sizeof(NODE)); temp->data = data; temp->pre = NULL; return temp; } // 스택에 저장된 데이터를 하나 꺼내는 함수 char pop(NODE **top) { NODE *temp = *top; char t; if(*top == NULL) .. 더보기
20141124_단일 연결리스트(singly linked list)_노드 삭제 함수(delNode) 이번에는 단일 연결리스트(singly linked list)의 노드 삭제 함수(delNode)입니다. 노드 추가 및 기본적인 소스는 다른 글에 있으니 참고 하시기 바랍니다. ^^ void delNode(NODE **head){NODE *pri = *head;NODE *temp = pri->next; // 현재 노드가 없을 경우if(pri == NULL)return; // 현재 노드가 한 개일 경우if(pri->next == NULL){*head = NULL;free(pri);}else // 노드가 2개 이상일 경우{while(temp->next != NULL){pri = temp;temp = temp->next;}pri->next = NULL;free(temp);}} int main(void){// 리스.. 더보기
20141124_스택(stack)을 이용한 수식의 중위 -> 후위 표기법 변환 자료구조의 종류 중 하나인 스택(stack)을 이용하여 수식을 중위 표기법에서 후위 표기법으로 변환하는 프로그램입니다. #include #include typedef struct node{char data;struct node *pre;}NODE; NODE* createNode(char data){NODE *temp = (NODE*)malloc(sizeof(NODE));temp->data = data;temp->pre = NULL; return temp;} char pop(NODE **top){NODE *temp = *top;char t; if(*top == NULL)return 0; *top = (*top)->pre; t = temp->data; free(temp); return t;} void pus.. 더보기
20141123_C언어 오목게임 C언어로 구현한 오목 게임입니다. 아래 소스코드는 컴퓨터와의 대전이 아니라 2인 플레이로 진행됩니다. 약간의 인공지능을 넣은 컴퓨터와의 대전을 구현한 오목은 첨부파일에 있습니다. #include #include #define LEFT 75#define RIGHT 77#define UP 72#define DOWN 80#define SPACE 32#define MAP_X 39#define MAP_Y 24#define ESC 27#define U1 1#define U2 2typedef struct XY{int x;int y;}xy;gotoxy(int x, int y){COORD pos = {x, y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos.. 더보기
20141123_단일 연결리스트(singly linked list)_노드 추가 함수(addNode) C언어로 구현한 단일 연결리스트(singly linked list)의 한 부분입니다.리스트의 맨 뒤에 새로 생성한 노드를 추가하는 addNode 함수로전역 변수를 사용하지 않고 이중 포인터를 사용해 구현했습니다. #include #include typedef struct node{int data;struct node* next;}NODE; /*전달받은 데이터를 저장하는 하나의 노드를 생성하는 함수*/NODE* createNode(int data){// 동적할당으로 노드를 생성해준다.NODE *temp = (NODE*)malloc(sizeof(NODE)); // 해당 노드가 가르키는 다음 노드의 주소 초기화temp->next = NULL; // 전달 받은 데이터를 저장temp->data = data; re.. 더보기