목록2-2 (9)
dew's CSE Studying
//허프만 코드 프로그램 #include #include #define MAX_ELEMENT 200 typedef struct TreeNode { int weight; char ch; struct TreeNode* left; struct TreeNode* right; }TreeNode; typedef struct { TreeNode* ptree; char ch; int key; }element; typedef struct { element heap[MAX_ELEMENT]; int heap_size; }HeapType; //생성함수 HeapType* create() { return (HeapType*)malloc(sizeof(HeapType)); } //초기화함수 void init(HeapType* h) ..
//히프 정렬 프로그램 #include #include #define MAX_ELEMENT 200 typedef struct { int key; }element; typedef struct { element heap[MAX_ELEMENT]; int heap_size; }HeapType; //초기화 함수 void init(HeapType* h) { h->heap_size = 0; } //생성함수 HeapType* create() { return (HeapType*)malloc(sizeof(HeapType)); } //heap의 삽입함수 void insert_max_heap(HeapType* h, element item) { int i; //i는 인덱스 번호 i = ++(h->heap_size); //트리를..
#include #include #define MAX_ELEMENT 200 typedef struct { int key; }element; typedef struct { element heap[MAX_ELEMENT]; int heap_size; }HeapType; //초기화 함수 void init(HeapType* h) { h->heap_size = 0; } //생성함수 HeapType* create() { return (HeapType*)malloc(sizeof(HeapType)); } //heap의 삽입함수 void insert_max_heap(HeapType* h, element item) { int i; //i는 인덱스 번호 i = ++(h->heap_size); //트리를 거슬러 올라가면서 부모..
//스레드 이진 트리 순회 프로그램 #include #define TRUE 1 #define FALSE 0 typedef struct TreeNode { int data; struct TreeNode* left, * right; int is_thread; //만약 오른쪽 링크가 스레드이면 TRUE }TreeNode; // G // C F // A B D E 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,&n..
[순회 프로그램] //순회 프로그램 #include #include #include typedef struct TreeNode { int data; struct TreeNode* left, * right; }TreeNode; // 15 // 4 20 // 1 16 25 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; inorder(TreeNode* root) {//중위순회 if (root..
#10 배열에 들어 있는 정수의 순서를 거꾸로 하는 프로그램을 작성해보자. 스택을 사용한다. //스택코드 #define _CRT_SECURE_NO_WARNINGS #include #include #define MAX_STACK_SIZE 100 typedef int element; typedef struct { element data[MAX_STACK_SIZE]; int top; } StackType; //스택초기화 함수 void init_stack(StackType* s) { s->top = -1; } //공백상태 검출함수 int is_empty(StackType* s) { return (s->top == -1); } //포화상태 검출함수 int is_full(StackType* s) { return (..
#1 프로시저 swap void swap(int v[], int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } [레지스터 할당] v=$a0, k=$a1, temp=$t0 [프로그램 변수에 레지스터 할당] 인수: v=$a0, k=$a1 // 변수: temp=$t0 [프로시저 본체] swap: sll $t1, $a1, 2 #reg $t1 = a1(k)*4 add $t1, $a0, $t1 #reg $t1 = k*4 + v(base address) lw $t0, 0($t1) #$t0=v[k] lw $t2, 4($t1) #$t2=v[k+1] #refers to next element of v sw $t2, 0($t1) v[k] = reg $t2 sw $..
LAB 1: 단어들을 저장하는 연결리스트 #define _CRT_SECURE_NO_WARNINGS #include #include #include typedef struct { char name[100]; }element; typedef struct ListNode { element data; struct ListNode* link; }ListNode; //오류처리함수 void error(char* message) { fprintf(stderr, "%s\n", message); exit(1); } //INSERT_FIRST ListNode* insert_first(ListNode* head, element value) { ListNode* p = (ListNode*)malloc(sizeof(ListNod..
1.괄호 검사의 조건 ①왼쪽 괄호의 개수 = 오른쪽 괄호의 개수 ②같은 종류의 괄호에서 왼쪽 괄호가 더 먼저 나와야 함 ③서로 다른 종류의 왼쪽 괄호와 오른쪽 괄호 쌍은 서로를 교차X ex. {A[(i+1)]=0;} ->오류 없음 if ((i==0) && (j==0) ->오류: 조건 1 위반 A[(i+1])=0; ->오류: 조건 3 위반 2.괄호 검사 구현 알고리즘 ①왼쪽 괄호를 만나면 -> 스택에 삽입 ②오른쪽 괄호를 만나면 a.스택에서 맨 위의 괄호를 꺼낸 후 b.오른쪽 괄호와 짝이 맞는지 검사 3.괄호 검사 프로그램 #include #include #include #define MAX_STACK_SIZE 100 //스택코드 삽입 typedef char element; typedef struct { ..