정보처리기사 실기C언어C 연결 리스트난이도 3MCQ

정보처리기사 실기 C 연결 리스트 기출문제 #3898

문제

다음 C 코드의 출력 결과는?

C
#include <stdio.h> #include <stdlib.h> struct node { char c; struct node* p; }; struct node* func(char* s) { struct node* h = NULL, *n; while (*s) { n = malloc(sizeof(struct node)); n->c = *s++; n->p = h; h = n; } return h; } int main() { struct node* n = func("BEST"); while (n) { putchar(n->c); struct node* t = n; n = n->p; free(t); } return 0; }

① BEST ② TSEB ③ BETS ④ ESTB

정답

2

해설

정답: 2. func는 새 노드를 항상 head 앞에 붙이므로 문자열 BEST가 역순 연결 리스트로 저장된다. 따라서 출력은 TSEB이다.

오답 풀이

  • 1번: 입력 문자열 순서 그대로 출력한 값이다.
  • 2번: 앞쪽 삽입으로 인해 역순 출력되므로 정답이다.
  • 3번: 일부 문자 순서가 잘못되었다.
  • 4번: 첫 글자와 나머지 순서를 혼동한 값이다.

보충 개념 연결 리스트에서 head 앞에 계속 삽입하면 입력 순서의 역순으로 노드가 연결된다. 문자열 끝은 널 문자로 판단한다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] C 연결 리스트 C언어 기출 #3898 | 문어CBT