Stack&Queue(1) - createQueueFromLinkedList 함수 구현하기
연결 리스트에 저장된 모든 정수들을 큐에 순서대로 넣는 함수
주어진 요소 확인하기
구조체
- Queue: (struct) 큐 구조체
- ll: (LinkedList) 큐 연산 구현을 위한 연결 리스트 구조체
- LinkedList: (struct) 연결 리스트 구조체
- size: (int field) 연결 리스트 요소 갯수
- *head: (pointer field) 연결 리스트 첫 노드의 주소
- ListNode: (struct) 노드 구조체
- item: (int field) 노드의 값
- *next: (pointer field) 다음 노드의 주소
createQueueFromLinkedList 함수의 매개 변수
- *ll: (pointer) 연결 리스트 주소
- *q: (pointer) 큐 주소
핵심 아이디어
- 연결 리스트가 비어있다면 return
- 큐가 비어있지 않다면 큐를 초기화
- 리스트의 첫 번째 노드부터 순서대로 enqueue 처리
- 연결 리스트는 큐에 삽입 후 유지(삭제 x)
구현하기
void createQueueFromLinkedList(LinkedList *ll, Queue *q)
{
// 연결 리스트가 비어 있으면 return
if (ll == NULL || ll->head == NULL) return;
// 큐가 비어있지 않다면 모든 요소 제거 (초기화)
if (!isEmptyQueue(q)) {
removeAllItemsFromQueue(q);
}
// 연결 리스트의 첫 노드부터 시작
ListNode *cur = ll->head;
// 연결 리스트의 각 노드를 순회하며 큐에 삽입
while (cur != NULL) {
enqueue(q, cur->item); // 큐에 현재 노드의 값 삽입
cur = cur->next; // 다음 노드로 이동
}
}
'크래프톤 정글 > Code 정글(C언어)' 카테고리의 다른 글
[C언어] Stack&Queue(3) - isStackPairwiseConsecutive 함수 구현하기 (0) | 2025.04.13 |
---|---|
[C언어] Stack&Queue(2) - createStackFromLinkedList 함수 구현하기 (0) | 2025.04.13 |
[C언어] 스택(Stack) 구현 실습하기 (0) | 2025.04.13 |
[C언어] 큐(Queue) 구현 실습하기 (0) | 2025.04.13 |
[C언어] Linked List (7) - recursiveReverse함수 구현하기 (0) | 2025.04.13 |