목록💯🌊자료구조&알고리즘/C언어 (9)
컴퓨터공학 💻 도서관📚

트리 자료구조 중에서 대표적인 트리인 이진 트리 예시 * 전위 순회 , 중위 순회 , 후위 순회 쉽게 구분하는 법 : root 가 몇번째 순서에 있는지 체크하면 편하다(전) left (중) right (후) : 그리고 left right 이 순서는 고정이다 전위 순회 : root left right중위 순회 : left root right후위 순회 : left right root #include #include // 노드 구조체 정의typedef struct Node { int data; struct Node* left; struct Node* right;} Node;// 노드 생성Node* createNode(i..
연결리스트로 구현한 큐 자료구조 #include #include // 노드 구조체 정의typedef struct Node { int data; struct Node* next;} Node;// 큐 구조체 정의typedef struct Queue { Node* front; Node* rear;} Queue;// 큐 초기화void init(Queue* q) { q->front = NULL; q->rear = NULL;}// 큐가 비었는지 확인int isEmpty(Queue* q) { return q->front == NULL;}// 데이터 삽입 (enqueue)void enqueue(Queue* q, int value) { Node* newNode = (Node*)..
연결리스트로 구현한 c언어 #include #include // 노드 구조체 정의typedef struct Node { int data; struct Node* next;} Node;// 스택 구조체 정의typedef struct Stack { Node* top;} Stack;// 스택 초기화void init(Stack* s) { s->top = NULL;}// 스택이 비었는지 확인int isEmpty(Stack* s) { return s->top == NULL;}// push: 스택에 데이터 삽입void push(Stack* s, int value) { Node* newNode = (Node*)malloc(sizeof(Node)); if (!newNode) { ..

아래 코드에서는 구조체 멤버변수 size 변수가 있어서 while문이 아닌 for문으로 코드를 짤 수 있 #include #include #define MAX_SIZE 100// 집합 구조체typedef struct { int elements[MAX_SIZE]; int size;} Set;// 집합에 원소 추가 (중복 방지)void addElement(Set *set, int elem) { for (int i = 0; i size; i++) { if (set->elements[i] == elem) return; // 이미 존재하면 추가하지 않음 } if (set->size elements[set->size++] = elem; }}// 합..
#include #include // 노드 정의typedef struct Node { int data; struct Node* next;} Node;// 원형 연결 리스트 구조체typedef struct { Node* head;} CircularLinkedList;// 리스트 초기화void initList(CircularLinkedList* list) { list->head = NULL;}// 노드 생성Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode;}// 끝에 삽입void ..

이중연결리스트를 이중 포인터로 선언할 수 도 있지만이중연결리스트 구조체를 따로 선언해서 구현하는 것이 가독성과 유지보수에 더 좋다. * 새로운 노드를 생성하는 함수가 있음삽입함수 / 삭제함수가 n번째 위치에(를) 삽입 / 삭제하는 형식 이중연결리스트는 앞뒤노드와 다 연결해야 되기 때문에뒤노드가 NULL인 경우도 인지하고 있어야 한다 if(temp->next) == if( temp->next 이 참일때, 0이 아닐때 ) 그래서 뒤노드가 NULL이 아니면 뒤노드->prev = newNode 이걸 연결해 주는 거다 (앞노드->next) 이중연결리스트의 append 함수는 1번째 위치에서는 연결을..

* 단일 연결 리스트의 구조typedef struct Node { // (정체성 : struct Node) int data; // 데이터 저장 (정체성 : int) struct Node* next; // 다음 노드를 가리키는 포인터 (정체성 : struct Node *)} Node; * 단일 연결 리스트의 기본 연산1.노드 추가(Append) : 리스트의 끝에 새로운 노드를 추가하는 기능 2. 노드 삭제(Delete) : 특정 값을 가진 노드를 삭제하는 기능 3. 노드 탐색(Search) : 특정 값을 가진 노드를 찾는 기능 4. 노드 출력(Display) : 리스트의 모든 노드를 순차적으로 출력하는 기능 * 단일 연결 리스트..