728x90
반응형
1. 연결 리스트를 이용해 큐를 만들기
- 큐에 첫 번째 노드를 생성하는 경우(큐가 비었을 경우)
- 큐가 비지 않고 노드가 있는 경우로 나누어서 노드를 추가
void createQueueFromLinkedList(LinkedList *ll, Queue *q)
{
ListNode *cur = ll->head;
ListNode *tail, *new_Node = NULL;
if (cur == NULL)
{
return;
}
while (cur != NULL)
{
// 새로운 노드에 메모리를 할당 받아 주소값을 저장
new_Node = malloc(sizeof(ListNode));
if (q->ll.head == NULL)
{
// 큐가 비었다면 연결 리스트의 cur값의 item을 new_Node의 item에 저장
new_Node->item = cur->item;
// next는 없기 때문에 NULL
new_Node->next = NULL;
// 꼬리 노드로 지정
tail = new_Node;
// 큐의 첫 번째 노드로 연결
q->ll.head = new_Node;
}
else
{
// 큐가 비지 않았다면 연결 리스트의 cur값의 item을 new_Node의 item에 저장
new_Node->item = cur->item;
// next는 없기 때문에 NULL
new_Node->next = NULL;
// 꼬리의 다음으로 새로 생성한 노드를 연결
tail->next = new_Node;
// 꼬리를 뒤로 한 칸 이동함
tail = tail->next;
}
cur = cur->next;
}
}
1-1. 큐에서 홀수만 제거하기
- 처음이 홀수인 경우
- 홀수가 중간인 경우
void removeOddValues(Queue *q)
{
ListNode *cur = q->ll.head;
ListNode *prev = NULL;
while (cur != NULL)
{
if (cur->item % 2 == 1)
{
if (prev == NULL)
{
// 처음이 홀수일 때
q->ll.head = cur->next;
}
else
{
// 중간이 홀수일 떄
prev->next = cur->next;
}
cur = cur->next;
}
else
{
prev = cur;
cur = cur->next;
}
}
}
728x90
반응형
'크래프톤 정글 - TIL' 카테고리의 다른 글
크래프톤 정글 5기 TIL - Day 28(C언어 자료구조 - 이진 트리) (0) | 2024.04.17 |
---|---|
크래프톤 정글 5기 TIL - Day 27(C언어 자료구조 - 스택과 큐) (0) | 2024.04.15 |
크래프톤 정글 5기 TIL - Day 25(C언어 자료구조 - 연결 리스트) (0) | 2024.04.13 |
크래프톤 정글 5기 TIL - Day 24(C언어 자료구조 - 연결 리스트) (0) | 2024.04.12 |
크래프톤 정글 5기 TIL - Day 23 (0) | 2024.04.12 |