분류 전체보기

// 원형 연결 리스트 : 마지막 노드가 첫 번째 노드를 가리키는 것 // 장점 : 하나의 노드에서 다른 모든 노드로의 접근이 가능 // 원형 연결 리스트 테스트 프로그램 #include #include typedef int element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; // 원형 연결 리스트 처음에 삽입하는 함수 ListNode* insert_first(ListNode* head, element data) { // 노드에 동적 메모리 할당 ListNode *node = (ListNode *)malloc(sizeof(ListNode)); node->data = data; if (head == NULL)..
// 배열로 리스트 구현하기 // 배열로 구현한 리스트 #include #include #define MAX_LIST_SIZE 100 typedef int element; // 리스트 요소 선언 typedef struct { element array[MAX_LIST_SIZE]; // 배열 선언 int size; // 리스트 크기 } ArrayListType; // 오류처리 함수 void error(char *message) { fprintf(stderr, "%s\n", message); exit(1); } // 리스트 초기화 함수 void init(ArrayListType *L) { L->size = 0; } // 리스트 공백 상태 함수 , 리스트가 비어있다면 1을 반환 , 그렇지 않다면 0을 반환 in..
큐(queue)는 먼저 들어온 데이터가 먼저 나가는 구조 : 선입선출(First-In First-Out) 스택은 삽입과 삭제가 같은 쪽에서 일어난다. 그러나 큐는 삽입은 후단(rear), 삭제는 전단(front)에서 일어난다. // 선형큐 프로그램 // 선형큐 #include #include #define MAX_QUEUE_SIZE 5 typedef int element; typedef struct { int front; // 전단 int rear; element data[MAX_QUEUE_SIZE]; } QueueType; // 오류 함수 : 오류메시지 출력 void error(char *message) { fprintf(stderr, "%s\n", message); exit(1); } // 큐 초기화..
스택(stack) : 쌓아놓은 더미 특징 - 후입선출(Last-In First-Out) 스택에 저장되는 것 : 요소(element) 스택을 구현하는 방법 1. 배열을 이용하는 방법 - 장점 : 구현이 쉬움 / 단점 : 스택의 크기가 고정 2. 연결 리스트를 이용하는 방법 - 장점 : 구현이 약간 복잡 / 단점 : 스택의 크기가 가변적 // 정수 배열 스택 프로그램 // 정수 배열의 스택 프로그램 #include #include #define MAX_STACK_SIZE 100 // 스택 크기 고정 typedef int element; // 요소의 자료형 : 정수형 element stack[MAX_STACK_SIZE]; // 1차원 배열 int top = -1; // 가장 위에 있는 스택의 인덱스 / 스택이..
동적 메모리 할당 : (C언어에서) 필요한 만큼의 메모리를 운영체제로 부터 할당 받아서 사용하고, 사용이 끝나면 시스템에 메모리를 반납하는 기능 // 동적 메모리 할당의 예 #include #include #include #define SIZE 10 int main() { int *p; // p가 가리키는 장 p = (int *)malloc(SIZE * sizeof(int)); printf("현재 p에 저장된 참조값 : %d\n",p); if (p == NULL) { fprintf(stderr, "메모리가 부족해서 할당할 수 없습니다.\n"); exit(1); } for (int i=0; i 동적 메모리 블럭의 시작 주소를 반환 printf("%d",malloc(sizeof(int))); 출력값 : 72..
// 하노이탑 문제 #include #include // 원판 n개를 막대 from으로 부터 to로 other을 이용하여 옮긴다. void hanoi_tower (int n, char from, char to, char other) { // 원판이 1개인 경우 if(n==1) printf("원판 1을 %c 에서 %c 로 옮긴다.\n", from, to); else { hanoi_tower (n-1, from, other, to); printf("원판 %d를 %c에서 %c로 옮긴다.\n", n, from, to); hanoi_tower (n-1, other, to, from); } } int main() { hanoi_tower(4,'A','B','C'); return 0; } /*출력값 원판 1을 A 에..
내가 잘한다 했잖아
'분류 전체보기' 카테고리의 글 목록 (47 Page)