컴퓨터 이론66 12. 단일 원형 연결리스트 단일 연결리스트는 다음 노드로 이동하게 되면 이전 노드의 포인터값을 저장하지 않는 이상 이전 노드를 참조할 수 없다. 이전 노드를 참조 할 수 있도록 하기 위해 연결리스트의 마지막 노드의 다음 노드는 NULL이 아니라 연결리스트의 첫 노드를 가리키게 된다. 이러면 원형의 모습을 하게 되어 지나친 노드도 다시 방문할 수 있게 된다. 단일 원형 연결리스트 구현 노드의 구성은 단일 원형 연결리스트와 다르지 않다. // 노드에 대한 구조체 정의 typedef struct Node *NodePointer; typedef struct Node{ int data; NodePointer next; }Node; 연결리스트의 노드 삽입, 삭제 함수는 단일 연결리스트와 조금 다르다. 단일 연결리스트에서 마지막 노드가 첫 노.. 2023. 3. 24. 11. 단일 연결리스트 역체인 알고리즘 연결리스트 역체인이란? 연결리스트의 역체인이란 단방향 연결리스트를 역순으로 뒤집는 알고리즘이다. 역체인 알고리즘은 반복문과 재귀함수 등 다양한 방법으로 구현할 수 있다. 반복문을 이용한 역체인 알고리즘에 대해서 알아보도록 하자. 반복문을 이용한 역체인 NodePointer Reverse_Linkedlist(NodePointer head){ NodePointer prev = NULL, current = head, next = NULL; while(current){ next = current -> next; current -> next = prev; prev = current; current = next; } return prev; } 이전에 이야기했듯이 포인터를 사용하는 것을 이해하기 어려울 때에는 그림을.. 2023. 3. 23. 10. 단일 연결리스트 연결리스트란? 노드를 순서대로 연결하여 표현한 자료구조이다. 연결리스트에서 데이터를 탐색, 삽입, 삭제를 수행하는 경우 특정 위치에 대한 포인터만 수정하면 되므로 배열과 달리 크기가 동적으로 변경될 수 있다는 장점이 존재한다. 연결리스트의 종류는 아래와 같다. 1. 단일 연결리스트 : 단방향으로만 데이터 접근이 가능한 연결리스트 2. 단일 원형 연결리스트 : 단방향으로만 데이터 접근이 가능하며 마지막 노드에서 처음 노드로 이동이 가능하다. 3. 이중 연결리스트 : 양방향으로 데이터 접근이 가능한 연결리스트 4. 이중 원형 연결리스트 : 양방향으로 데이터 접근이 가능하며 마지막 노드에서 처음 노드로 이동이 가능하다. 노드란? 데이터를 저장하는 단위로, C언어에서는 구조체로 정의한다. 연결리스트의 노드는 데.. 2023. 3. 23. 09. 재귀 함수 문제풀이 이전 글에서 안내하였던 재귀함수 공부를 위한 다양한 문제들을 풀어보도록 한다. 1. 팩토리얼 계산 #include int factorial(int n){ if(n 2023. 3. 22. 08. 재귀 함수 Q. 1부터 N까지의 정수를 덧셈하는 프로그램을 작성해 보세요. 위의 문제를 해결하기 위해서는 다양한 방법으로 프로그램을 작성할 수 있다. 1. 수학 공식을 이용한 프로그램 작성 #include int main() { int i, n, sum = 0; printf("N값을 입력해주세요 : "); scanf("%d", &n); sum = (n*(n+1))/2; printf("%d", sum); return 0; } 등차수열의 공식을 이용하여 n까지의 합을 구할 수 있다. 2. 반복문을 이용한 프로그램 작성 #include int main() { int i, n, sum = 0; printf("N값을 입력해주세요 : "); scanf("%d", &n); for(i = 1; i 2023. 3. 22. 07. 문자열 함수 라이브러리 문자열은 배열을 조작하다 보니 상대적으로 기본 연산이 제한되어 있다. C 언어에서는 문자열 함수 라이브러리를 제공하여 제한된 연산을 수행할 수 있도록 도움을 주고 있다. 에서 다양한 문자열 관련 함수를 제공한다. 문자열 길이 반환 C 언어에서 문자열을 입력받아 처리하다 보면 문자열의 길이를 알아야 하는 경우가 종종 있다. 그런 경우 strlen() 함수를 이용하여 문자열 길이를 반환받을 수 있다. #include #include int main() { char str1[100]; scanf("%s", str1); printf("%d\n", (int)strlen(str1)); return 0; } strlen() 함수의 경우 반환 타입이 unsigned int이므로 우리가 일반적으로 사용하기 위해서는 in.. 2023. 3. 21. 이전 1 ··· 7 8 9 10 11 다음