본문 바로가기

C

(23)
문과생이 이해한 트리(순회-스레드 이진트리) 출처 : + 학교 수업 #include #define TRUE 1 #define False 0 typedef struct TreeNode { int data; struct TreeNode* left, * right; int is_thread; }TreeNode; TreeNode n1 = { 'A', NULL, NULL, 1 }; TreeNode n2 = { 'B', NULL, NULL, 1 }; TreeNode n3 = { 'C', &n1, &n2, 0 }; TreeNode n4 = { 'D', NULL, NULL, 1 }; TreeNode n5 = { 'E', NULL, NULL, 0 }; TreeNode n6 = { 'F', &n4, &n5, 0 }; TreeNode n7 = { 'G', &n3, &..
문과생이 이해한 트리(순회-레벨 순회) 출처 : + 학교 수업 #include #include #define MAX 100 typedef struct TreeNode { int data; struct TreeNode* left, * right; }TreeNode; typedef struct { TreeNode* data[MAX]; int front, rear; }QueueType; void init(QueueType* q) { q->front = q->rear = 0; } int is_empty(QueueType* q) { return (q->front == q->rear); } int is_full(QueueType* q) { return ((q->rear) + 1) % MAX == q->front; } void enqueue(QueueTy..
문과생이 이해한 트리(순회-전위, 중위, 후위) 출처 : + 학교 수업 #include #include #include typedef struct TreeNode { int data; struct TreeNode* left, * right; }TreeNode; TreeNode n1 = { 1, NULL, NULL }; TreeNode n2 = { 4, &n1, NULL }; TreeNode n3 = { 16, NULL, NULL }; TreeNode n4 = { 25, NULL, NULL }; TreeNode n5 = { 20, &n3, &n4 }; TreeNode n6 = { 15, &n2, &n5 }; TreeNode* root = &n6; //전위 순회 void preorder(TreeNode* root) { if (root != NULL) { ..
문과생이 이해한 덱(deque- double-ended queue) 출처 : + 학교 수업 #include #include #define MAX 5 typedef struct { int data[MAX]; int front, rear; }DequeType; void init_deque(DequeType* q) { q->front = q->rear = 0; } int is_empty(DequeType* q) { return (q->front == q->rear); } int is_full(DequeType* q) { return ((q->rear+1)%MAX==q->front); } void deque_print(DequeType* q) { printf("Deque (front = %d, rear = %d) = ", q->front, q->rear); if (is_empt..
문과생이 이해한 연결된 큐 출처 : + 학교 수업 #include #include typedef struct { int data; struct QueueNode* link; }QueueNode; typedef struct { QueueNode* front; //삭제 QueueNode* rear; //삽입 }QueueType; void init(QueueType* q) { q->front = NULL; q->rear = NULL; } /*void enqueue_first(QueueType* q, int item) { QueueNode* new_node = (QueueNode*)malloc(sizeof(QueueNode)); new_node->data = item; new_node->link = NULL; q->rear = new_n..
문과생이 이해한 원형큐 ▲출처 : + 학교 수업 #include #include #define MAX 5 typedef struct { int front; int rear; int data[MAX]; }QueueType; void init(QueueType* q) { q->front = 0; q->rear = 0; } int is_full(QueueType *q) { if ((q->rear+1)%MAX==q->front) return 1; return 0; } int is_empty(QueueType* q) { if (q->front == q->rear) return 1; return 0; } void enqueue(QueueType* q, int item) { if (is_full(q)) { fprintf(stderr, "큐..
문과생이 이해한 선형큐 ▲출처 : + 학교 수업 #include #include #define MAX 100 typedef struct { int front; int rear; int data[MAX]; }QueueType; void init(QueueType* q) { q->front = -1; q->rear = -1; } int is_empty(QueueType* q) { if (q->front == q->rear) return 1; else return 0; //false } int is_full(QueueType* q) { if (q->rear == MAX - 1) return 1; else return 0; } void enqueue(QueueType* q, int item) { if (is_full(q)) { fpr..
문과생이 이해한 스택(동적, 구조체) 출처 : + 학교 수업 #include #include typedef int element; typedef struct node { element data; struct node* link; }node; node* top = NULL; void push(element value) { node* new_node = (node*)malloc(sizeof(node)); if (new_node == NULL) { fprintf(stderr, "메모리 할당 에러\n"); return; } else { new_node->data = value; new_node->link = top; top = new_node; } } element pop() { if (top == NULL) { fprintf(stderr, "스택..