25-1아래 C 프로그램의 출력 내용을 적으시오.#include <… | 2025년 정보처리기사실기 1회차 기출문제 상세 페이지
7
25-1
아래 C 프로그램의 출력 내용을 적으시오.
#include <stdio.h>
#include <stdlib.h>
typedef struct Item {
int num;
struct Item *link;
} Item;
Item *push_back(Item *head, int num) {
Item *node = (Item *)malloc(sizeof(Item));
node->num = num;
node->link = NULL;
if (head == NULL)
return node;
Item *cur = head;
while (cur->link != NULL)
cur = cur->link;
cur->link = node;
return head;
}
Item *bring_front(Item *head, int target) {
if (head == NULL || head->num == target)
return head;
Item *before = head;
while (before->link != NULL && before->link->num != target)
before = before->link;
if (before->link == NULL)
return head;
Item *hit = before->link;
before->link = hit->link;
hit->link = head;
return hit;
}
int main(void) {
Item *head = NULL, *cur, *tmp;
for (int v = 7; v <= 35; v += 7)
head = push_back(head, v);
head = bring_front(head, 28);
head = bring_front(head, 14);
for (cur = head; cur != NULL; cur = cur->link)
printf(cur == head ? "%d" : " %d", cur->num);
while (head != NULL) {
tmp = head;
head = head->link;
free(tmp);
}
return 0;
}해설
14 28 7 21 35
[해설]
push_back은 새 노드를 리스트 끝에 붙이므로 처음 리스트는 7 → 14 → 21 → 28 → 35다.
bring_front는 target 값을 가진 노드를 찾아 앞 노드와의 연결을 끊고, 그 노드를 맨 앞(head)으로 옮긴다.
- bring_front(28): 28 → 7 → 14 → 21 → 35
- bring_front(14): 14 → 28 → 7 → 21 → 35
첫 노드는 "%d", 나머지는 " %d"로 찍어 공백으로 구분하므로 14 28 7 21 35가 출력된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.