본문 바로가기
반응형

C Programming27

[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] 중위연산식 후위연산식으로 바꾸기 2 [C] 중위연산식 후위연산식으로 바꾸기 1 오랜만에 C 연습 좀 해봅싀당 중위 표기법과 후위 표기법 1. 개념 1-1. 중위 표기법이란? 1-2. 후위 표기법이란? 2. 중위 표기식을 후위 표기식으로 바꾸는 법 2-1. 괄호가 없는 경우 2-2. 괄호가 있는 program-developers-story.tistory.com 이번에는 괄호까지 포함해서 동작하는 후위 연산식 변환 프로그램 작성해볼게유 /* 괄호 포함 중위 연산자 입력받아서 후위 연산자로 출력해주는 프로그램 */ #include #include #define STACKSIZE 10 int top = -1; bool isEmpty(void) { return top == -1; } bool isFull(void) { return top == ST.. 2024. 3. 3.
[C] 중위연산식 후위연산식으로 바꾸기 1 오랜만에 C 연습 좀 해봅싀당 중위 표기법과 후위 표기법 1. 개념 1-1. 중위 표기법이란? 1-2. 후위 표기법이란? 2. 중위 표기식을 후위 표기식으로 바꾸는 법 2-1. 괄호가 없는 경우 2-2. 괄호가 있는 경우 3. 계산 3-1. 후위 표기식을 사칙연산하는 법 1. 개념 1- todaycode.tistory.com 후위 표기법 규칙에 대한 건 윗 블로그를 보며 복습했슴다! 일단 괄호 없이 동작하는 후위 연산자 변환 프로그램 만들어봅니다 /* 괄호 없을 때 중위 연산자 입력받아서 후위 연산자로 출력해주는 프로그램 */ #include #include #define STACKSIZE 10 int top = -1; bool isEmpty(void) { return top == -1; } bool i.. 2024. 3. 3.
[Linux] C 프로그램의 빌드 과정 살펴보기 우리는 그냥 gcc main.cpp -o main만 하면 gcc가 cpp파일을 실행파일로 바꿔준다. gcc 컴파일러는 어떤 일을 뒤에서 하고 있는 걸까? 4가지 과정이 있다. preprocessing, compile, assmble, linking 그 과정을 수행하는 장치를 preprocessor, compiler, assembler, linker 라고하는 것이고 preprocessor가 c, cpp입력을 받아서 include 헤더를 풀어서 코드안에 다시 넣어주고 i파일로 생성 compiler가 i파일을 입력받아서 어셈블리어로 바꿔주고 s파일을 생성 assembler가 s파일을 입력받아서 기계어(2진수)로 바꿔주고 o파일을 생성 linker가 o파일을 입력받아서 실행파일을 생성 듣기만 해서는 잘 모르겠으.. 2024. 2. 8.
[C] C언어는 왜 쓰는가? 포인터, 즉 메모리 관리로 인한 빠른 실행 속도 때문에 쓴다고 해도 과언이 아니다. 실행 순간 HDD에서 bash를 통해서 SDRAM(SD MEMORY)에 잡힌다. 어떻게 잡히냐면 read에서만 sizeof를 해서 buffer의 크기만큼 효율적으로 읽어오는 거고, write할 때는 return된 read한 size인 n만큼만 써주면 되는 거임. 파일 위치 지시자라는게 있어서 마지막으로 읽고 나온 위치를 저장해줌. 파일 크기가 크다면 그런식으로 이어서 쓰면 되는거임. while의 종료 조건은 void pointer 를 통해 어떠한 포인터도 가리킬수 있다는 것이 장점임. 다만 사용할 떄 어떤 형의 변수를 가리킬 포인터인지 형을 알려줘야함. 2024. 2. 2.
반응형