본문 바로가기
반응형

분류 전체보기174

[C++ Programming] Template을 사용한 Doubly Linked List 구현 #include template class Node { public: T data; Node* prev; Node* next; Node(T value) : data(value), prev(nullptr), next(nullptr) {} }; template class DoublyLinkedList { private: Node* head; Node* tail; public: DoublyLinkedList() : head(nullptr), tail(nullptr) {} void insertFront(T value) { Node* newNode = new Node(value); if (!head) { head = tail = newNode; } else { newNode->next = head; head->p.. 2024. 3. 17.
[C Programming] Doubly Linked List #include #include #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable:4996) typedef struct NODE { int data; struct NODE* prev; struct NODE* next; }__NODE; __NODE* createNode(int data) { __NODE* newNode = (__NODE*)malloc(sizeof(__NODE)); newNode->data = data; newNode->prev = NULL; newNode->next = NULL; return newNode; } void insertNode(__NODE** head, int data, __NODE** tail) { __NODE* newNode.. 2024. 3. 16.
[C Programming] Stack을 사용한 중위연산식->후위연산식 변환 /* 괄호 포함 중위 연산자 입력받아서 후위 연산자로 출력해주는 프로그램 */ #include #include #define STACKSIZE 10 int top = -1; bool isEmpty(void) { return top == -1; } bool isFull(void) { return top == STACKSIZE - 1; } void push(char* stack, char data) { if (!isFull()) { stack[++top] = data; printf("top:%d->data:%d\n", top, stack[top]); } else { printf("Full\n"); } } char pop(char* stack) { if (!isEmpty()) { char temp = stac.. 2024. 3. 15.
[C Programming] Cirqular Queue /* 원형큐에서는 포화 상태와 공백 상태 구분을 위해 항상 한칸은 비워둔다. */ #include #include #include #define QSIZE 10 typedef struct{ int rear; int front; }queuepointer; queuepointer qp; bool isEmpty(void) { return qp.front == qp.rear; } bool isFull(void) { return qp.front == (qp.rear + 1) % QSIZE; } void enqueue(int* queue, int data) { if(!isFull()) { queue[qp.rear] = data; printf("Enqueue %d\n",data); printf("%d %d\n", q.. 2024. 3. 14.
[C Programming] Stack #include #include #define STACKSIZE 10 int top = -1; bool isEmpty(void) { return top == -1; } bool isFull(void) { return top == STACKSIZE - 1; } void push(int* stack, int data) { if (!isFull()) { stack[++top] = data; printf("top:%d->data:%d\n",top,stack[top]); } else { printf("Full\n"); } } int pop(int* stack) { if (!isEmpty()) { return stack[top--]; } else { printf("Empty\n"); } } int peek(int*.. 2024. 3. 14.
[C Network Programming] Parity Code C코드 #include #pragma warning(disable:4996) int main() { char Cnum_1; char Cnum_2; int i, j; int result_1[20]; int result_2[20]; result_1[7] = 0; result_2[7] = 0; int count_a1 = 0, count_a2 = 0, count_b1 = 0, count_b2 = 0; printf("Cnum_1,Cnum_2입력: "); scanf("%c %c",&Cnum_1,&Cnum_2); printf("Cnum_1:%d\nCnum_2:%d\n", Cnum_1, Cnum_2); int num_1 = Cnum_1; int num_2 = Cnum_2; for (i = 0; num_1 > 0; i++) {.. 2024. 3. 13.
[Network]ICMPv6 1. 역할 ICMPv6를 간단히 설명하자면 IPv6에서 쓰이는 보조 프로토콜입니다. 사진을 보면 IPv4를 살펴보면 ICMP,IGMP,ARP와 같은 3가지 보조 프로토콜이 있었습니다. 하지만 IPv6에서는 이 기능을 ICMPv6가 모두 맡아 처리합니다. ipv4에서 3가지로 나뉘어졌던 보조 프로토콜을 ipv6에서는 icmpv6 하나로 통합했는데 icmpv6에서 type을 나눠서 NDP, MLD를 사용합니다. NDP는 neighbor discovery protocol의 약자로 ipv4의 arp의 업그레이드된 느낌이라 생각하시면 되고, MLD는 IGMP에서 쓸모없는 기능들을 없애서 나온 업그레이드 버전이라고 생각하시면 됩니다. •ICMPv6는 IPv6에서 쓰기 위해 기존 버전을 업그레이드한 버전이다. •IC.. 2024. 3. 12.
[C Network Programming] Dijkstra's Routing Algorithm C code #include #include #define STRANGER 9999 #define MAX 10 #pragma warning (disable:4996) void dijkstra(int G[MAX][MAX], int n, int startnode); int main() { int G[MAX][MAX], i, j, n, u; printf("\nEnter the number of nodes : "); scanf("%d", &n); printf("\nEnter the cost matrix :\n"); for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &G[i][j]); printf("\nEnter the starting node:"); scanf("%d.. 2024. 3. 11.
반응형