목록💯🌊자료구조&알고리즘/C언어 (5)
컴퓨터공학 💻 도서관📚
#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) : 리스트의 모든 노드를 순차적으로 출력하는 기능 * 단일 연결 리스트..
예시) n 이 5일때 3번을 from 에서 tmp로 -->4번을 from 에서 tmp(임시) 로 --> 4번을 from 에서 to로 (printf) 4번을 tmp에서 to로 -->5번을 from 에서 to 로 (printf) ..
재귀함수 : 자기 자신을 호출하는 함수 재귀함수의 구조1. 종료조건 : if 문을 사용2. 재귀 : 자기 자신을 호출 (else 나 return 등을 사용) 재귀함수 예시 : 팩토리얼, 최대공약수 계산#include #pragma warning(disable : 4996)int facto(int num){ if (num == 1) // 종료조건 { return 1; } else { return num * facto(num - 1); // 재귀적 호출 }}int main(void) { int N; scanf("%d", &N); int ans = facto(N); printf("%d", ans); return 0;}* 재귀함수의 장단점장점 1. 코드의 가독성이 높아진다 (재귀적..