티스토리 뷰
완전한 형태로 구현하지 않고 일부만 구현해서 사용하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* Circle.h */ #pragma once #ifndef __CIRCLE_H #define __CIRCLE_H typedef struct _CIRCLE_NODE { DWORD index; struct _CIRCLE_NODE *next_node; } CIRCLE_NODE, *PCIRCLE_NODE; typedef struct _CIRCLE { PBreak_Table header_table; PBreak_Table tailer_table; } CIRCLE, *PCIRCLE; void Insert_Circle(PCIRCLE pbtc, DWORD value); DWORD Table_Count(PCIRCLE pbtc); BOOL Search_Circle(const PBreak_Table_Circle pbtc, const DWORD value); void Delete_Circle(PCIRCLE pbtc, DWORD offset); #endif | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | /* Circle.c */ #include "Circle.h" PCIRCLE gp_circle; void Insert_Circle(PCIRCLE pcir, DWORD value) { PCIRCLE_NODE new_table = (PCIRCLE_NODE) malloc(sizeof(CIRCLE_NODE)); if(pcir->header_table == NULL) { pcir->header_table = new_table; pcir->tailer_table = new_table; new_table->index = value; new_table->next_table = pcir->tailer_table; } else { new_table->next_table = pcir->header_table; new_table->index = value; pcir->tailer_table->next_table = pcir->header_table; } } DWORD Table_Count(PCIRCLE pcir) { DWORD count = 0; PCIRCLE_NODE temp = pcir->header_table; if(temp == NULL) return count; do { count++; temp = temp->next_table; }while(temp != pcir->tailer_table); return count; } BOOL Search_Circle(const PCIRCLE pbtc, const DWORD value) { PCIRCLE_NODE temp = pbtc->header_table; if(temp == NULL) return FALSE; do { if(temp->list_offset == value) { return TRUE; } temp = temp->next_table; } while(temp != pbtc->tailer_table); return FALSE; } void Delete_Circle(PCIRCLE pcir, DWORD offset) { PCIRCLE_NODE temp = NULL; // temp table ptr PCIRCLE_NODE Del_table = pcir->header_table; // Delete table ptr DWORD i = 0; for(i=0; i<Table_Count(pcir); i++) { if(Del_table->index == offset) break; // Find offset else { temp = Del_table; Del_table = Del_table->next_table; } } if(temp != NULL) temp->next_table = Del_table->next_table; //sorting circle linked list Del_table->index = NULL; Del_table->next_table = NULL; // Zero Set free(Del_table); } | cs |
주의 : 옮기는 도중에 코드를 변형해서 오타가 있을 수 있음...
'Programming > C' 카테고리의 다른 글
Linux gcc Compile MakeFile (0) | 2016.11.20 |
---|---|
List Control 사용하기 (0) | 2016.11.07 |
error LNK2001 오류 해결 방법 (0) | 2016.10.31 |
String 내부 알파벳 갯수 계산 (0) | 2016.09.15 |
난수 자릿수별 빈도 계산기 (0) | 2016.09.14 |
댓글